/* SPDX-License-Identifier: MIT
 *
 * Permission is hereby granted, free of charge, to any person
 * obtaining a copy of this software and associated documentation
 * files (the "Software"), to deal in the Software without
 * restriction, including without limitation the rights to use, copy,
 * modify, merge, publish, distribute, sublicense, and/or sell copies
 * of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 *
 * Copyright:
 *   2020      Evan Nemerson <evan@nemerson.com>
 *   2020      Himanshi Mathur <himanshi18037@iiitd.ac.in>
 *   2020      Hidayat Khan <huk2209@gmail.com>
 */

#define SIMDE_TEST_X86_AVX512_INSN sub

#include <test/x86/avx512/test-avx512.h>
#include <simde/x86/avx512/set.h>
#include <simde/x86/avx512/sub.h>

static int
test_simde_mm512_sub_epi8(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m512i a;
    simde__m512i b;
    simde__m512i r;
  } test_vec[8] = {
    { simde_mm512_set_epi8(INT8_C(  82), INT8_C(  83), INT8_C( 117), INT8_C(  65),
                           INT8_C( -47), INT8_C(-122), INT8_C( 116), INT8_C(  14),
                           INT8_C(  76), INT8_C(   1), INT8_C( -50), INT8_C(   4),
                           INT8_C(  83), INT8_C( -77), INT8_C( 112), INT8_C(-102),
                           INT8_C(  99), INT8_C(-118), INT8_C( -47), INT8_C( -67),
                           INT8_C(  60), INT8_C( -34), INT8_C(  78), INT8_C(-110),
                           INT8_C( -58), INT8_C(  87), INT8_C( -61), INT8_C(  26),
                           INT8_C( -17), INT8_C( -46), INT8_C( 116), INT8_C( -20),
                           INT8_C(-120), INT8_C(  48), INT8_C(  24), INT8_C(  46),
                           INT8_C( 103), INT8_C( -34), INT8_C(  42), INT8_C(  51),
                           INT8_C( -65), INT8_C(  86), INT8_C(  61), INT8_C( -56),
                           INT8_C(  58), INT8_C( 119), INT8_C(  93), INT8_C(  -1),
                           INT8_C( -58), INT8_C(-121), INT8_C( -32), INT8_C(  98),
                           INT8_C( -66), INT8_C(  79), INT8_C(  99), INT8_C( -93),
                           INT8_C(  77), INT8_C( -56), INT8_C( -78), INT8_C(  39),
                           INT8_C( -50), INT8_C( -60), INT8_C( -68), INT8_C(  -4)),
      simde_mm512_set_epi8(INT8_C( 106), INT8_C(  39), INT8_C(-106), INT8_C(  14),
                           INT8_C( -28), INT8_C(  -2), INT8_C(  39), INT8_C( -28),
                           INT8_C(  54), INT8_C(  70), INT8_C( -19), INT8_C( -12),
                           INT8_C( -42), INT8_C(  28), INT8_C( -13), INT8_C(  -6),
                           INT8_C( 116), INT8_C(   2), INT8_C(  23), INT8_C( 121),
                           INT8_C( 112), INT8_C( -35), INT8_C(-124), INT8_C(  10),
                           INT8_C( -16), INT8_C(-117), INT8_C(  26), INT8_C(-125),
                           INT8_C(  36), INT8_C( 109), INT8_C(  29), INT8_C( -35),
                           INT8_C(  -9), INT8_C( -85), INT8_C( -38), INT8_C(  95),
                           INT8_C( -88), INT8_C(   3), INT8_C(   4), INT8_C( 100),
                           INT8_C(  85), INT8_C(  21), INT8_C(  66), INT8_C( -33),
                           INT8_C( -77), INT8_C(  -5), INT8_C(-126), INT8_C( 122),
                           INT8_C( -30), INT8_C( -83), INT8_C(  74), INT8_C(-108),
                           INT8_C(  83), INT8_C( -96), INT8_C( -57), INT8_C(-108),
                           INT8_C(  89), INT8_C(  59), INT8_C( 111), INT8_C( -47),
                           INT8_C( -10), INT8_C( -18), INT8_C(  20), INT8_C(-125)),
      simde_mm512_set_epi8(INT8_C( -24), INT8_C(  44), INT8_C( -33), INT8_C(  51),
                           INT8_C( -19), INT8_C(-120), INT8_C(  77), INT8_C(  42),
                           INT8_C(  22), INT8_C( -69), INT8_C( -31), INT8_C(  16),
                           INT8_C( 125), INT8_C(-105), INT8_C( 125), INT8_C( -96),
                           INT8_C( -17), INT8_C(-120), INT8_C( -70), INT8_C(  68),
                           INT8_C( -52), INT8_C(   1), INT8_C( -54), INT8_C(-120),
                           INT8_C( -42), INT8_C( -52), INT8_C( -87), INT8_C(-105),
                           INT8_C( -53), INT8_C( 101), INT8_C(  87), INT8_C(  15),
                           INT8_C(-111), INT8_C(-123), INT8_C(  62), INT8_C( -49),
                           INT8_C( -65), INT8_C( -37), INT8_C(  38), INT8_C( -49),
                           INT8_C( 106), INT8_C(  65), INT8_C(  -5), INT8_C( -23),
                           INT8_C(-121), INT8_C( 124), INT8_C( -37), INT8_C(-123),
                           INT8_C( -28), INT8_C( -38), INT8_C(-106), INT8_C( -50),
                           INT8_C( 107), INT8_C( -81), INT8_C(-100), INT8_C(  15),
                           INT8_C( -12), INT8_C(-115), INT8_C(  67), INT8_C(  86),
                           INT8_C( -40), INT8_C( -42), INT8_C( -88), INT8_C( 121)) },
    { simde_mm512_set_epi8(INT8_C(-108), INT8_C(-116), INT8_C(  21), INT8_C(-123),
                           INT8_C( -53), INT8_C(  42), INT8_C(  66), INT8_C(  13),
                           INT8_C(   9), INT8_C( 115), INT8_C(  86), INT8_C( 126),
                           INT8_C( -24), INT8_C(  35), INT8_C(  -5), INT8_C( 103),
                           INT8_C(  38), INT8_C( 111), INT8_C(  24), INT8_C( -71),
                           INT8_C(  -1), INT8_C(  17), INT8_C( -63), INT8_C( -13),
                           INT8_C(  14), INT8_C(  82), INT8_C(  78), INT8_C(-102),
                           INT8_C(  -7), INT8_C(  93), INT8_C(  25), INT8_C( 103),
                           INT8_C( 113), INT8_C( -15), INT8_C( -19), INT8_C( -73),
                           INT8_C( -11), INT8_C( 103), INT8_C( -97), INT8_C( 123),
                           INT8_C(  28), INT8_C(  53), INT8_C( -15), INT8_C( 122),
                           INT8_C(   3), INT8_C( -54), INT8_C( -61), INT8_C(  58),
                           INT8_C( -44), INT8_C(  -3), INT8_C( -43), INT8_C( -35),
                           INT8_C(-118), INT8_C( -18), INT8_C(  15), INT8_C(  54),
                           INT8_C(-102), INT8_C( -58), INT8_C( -74), INT8_C( -70),
                           INT8_C(  46), INT8_C(  48), INT8_C( -35), INT8_C(  92)),
      simde_mm512_set_epi8(INT8_C(   6), INT8_C(  68), INT8_C(  77), INT8_C( -94),
                           INT8_C( -48), INT8_C(-101), INT8_C(  -8), INT8_C(  82),
                           INT8_C(  50), INT8_C( -15), INT8_C(   6), INT8_C(  30),
                           INT8_C( -47), INT8_C( -15), INT8_C( -14), INT8_C( -97),
                           INT8_C(  28), INT8_C( -47), INT8_C( -92), INT8_C( -84),
                           INT8_C( -37), INT8_C( -33), INT8_C(-123), INT8_C( -19),
                           INT8_C(  58), INT8_C(  29), INT8_C(  93), INT8_C( -55),
                           INT8_C(-127), INT8_C( -60), INT8_C(  32), INT8_C( 116),
                           INT8_C( -46), INT8_C(  51), INT8_C( -40), INT8_C(  10),
                           INT8_C(   4), INT8_C(  50), INT8_C(  48), INT8_C(  53),
                           INT8_C(  78), INT8_C(  21), INT8_C(  64), INT8_C( 107),
                           INT8_C(  16), INT8_C(  48), INT8_C( -46), INT8_C(  62),
                           INT8_C(  75), INT8_C(  85), INT8_C(-115), INT8_C( -14),
                           INT8_C( -99), INT8_C(  86), INT8_C(-116), INT8_C( -74),
                           INT8_C(  38), INT8_C(  27), INT8_C(-115), INT8_C(  55),
                           INT8_C( -91), INT8_C( -71), INT8_C( -14), INT8_C( -84)),
      simde_mm512_set_epi8(INT8_C(-114), INT8_C(  72), INT8_C( -56), INT8_C( -29),
                           INT8_C(  -5), INT8_C(-113), INT8_C(  74), INT8_C( -69),
                           INT8_C( -41), INT8_C(-126), INT8_C(  80), INT8_C(  96),
                           INT8_C(  23), INT8_C(  50), INT8_C(   9), INT8_C( -56),
                           INT8_C(  10), INT8_C( -98), INT8_C( 116), INT8_C(  13),
                           INT8_C(  36), INT8_C(  50), INT8_C(  60), INT8_C(   6),
                           INT8_C( -44), INT8_C(  53), INT8_C( -15), INT8_C( -47),
                           INT8_C( 120), INT8_C(-103), INT8_C(  -7), INT8_C( -13),
                           INT8_C( -97), INT8_C( -66), INT8_C(  21), INT8_C( -83),
                           INT8_C( -15), INT8_C(  53), INT8_C( 111), INT8_C(  70),
                           INT8_C( -50), INT8_C(  32), INT8_C( -79), INT8_C(  15),
                           INT8_C( -13), INT8_C(-102), INT8_C( -15), INT8_C(  -4),
                           INT8_C(-119), INT8_C( -88), INT8_C(  72), INT8_C( -21),
                           INT8_C( -19), INT8_C(-104), INT8_C(-125), INT8_C(-128),
                           INT8_C( 116), INT8_C( -85), INT8_C(  41), INT8_C(-125),
                           INT8_C(-119), INT8_C( 119), INT8_C( -21), INT8_C( -80)) },
    { simde_mm512_set_epi8(INT8_C(   2), INT8_C( -77), INT8_C( -19), INT8_C(  41),
                           INT8_C( -13), INT8_C(  75), INT8_C(-123), INT8_C(  96),
                           INT8_C( -86), INT8_C( -24), INT8_C( -27), INT8_C( -84),
                           INT8_C(  35), INT8_C( -86), INT8_C( -72), INT8_C( -97),
                           INT8_C(  44), INT8_C(  11), INT8_C(-106), INT8_C(  44),
                           INT8_C(   0), INT8_C(  90), INT8_C( -79), INT8_C(  91),
                           INT8_C( 119), INT8_C(  59), INT8_C( 105), INT8_C(-128),
                           INT8_C( 110), INT8_C( -29), INT8_C(  67), INT8_C( 114),
                           INT8_C( -39), INT8_C( -49), INT8_C( 105), INT8_C( -40),
                           INT8_C( -33), INT8_C( 120), INT8_C( -27), INT8_C( 100),
                           INT8_C( -90), INT8_C(  86), INT8_C( -18), INT8_C( -57),
                           INT8_C(  84), INT8_C( -26), INT8_C( -77), INT8_C(  17),
                           INT8_C( -47), INT8_C(  51), INT8_C( -83), INT8_C(  53),
                           INT8_C(  71), INT8_C(  96), INT8_C( 110), INT8_C( -89),
                           INT8_C(  27), INT8_C( -45), INT8_C(-126), INT8_C(  40),
                           INT8_C(  95), INT8_C( -87), INT8_C( -62), INT8_C( -52)),
      simde_mm512_set_epi8(INT8_C( -84), INT8_C( 127), INT8_C(  61), INT8_C( -16),
                           INT8_C(  30), INT8_C(   6), INT8_C(-112), INT8_C( 104),
                           INT8_C( -60), INT8_C( -88), INT8_C( -39), INT8_C( -19),
                           INT8_C(  44), INT8_C(  36), INT8_C( 105), INT8_C( 120),
                           INT8_C( -26), INT8_C(  21), INT8_C(  14), INT8_C(  42),
                           INT8_C(  49), INT8_C( -84), INT8_C(-120), INT8_C(-107),
                           INT8_C( 123), INT8_C( -47), INT8_C(  21), INT8_C( -10),
                           INT8_C(  95), INT8_C( 124), INT8_C( -33), INT8_C( -34),
                           INT8_C( -33), INT8_C( -71), INT8_C(  11), INT8_C(  74),
                           INT8_C( 104), INT8_C( 108), INT8_C( -35), INT8_C( -59),
                           INT8_C( -55), INT8_C(-126), INT8_C( 107), INT8_C(  23),
                           INT8_C(  29), INT8_C( -27), INT8_C( 123), INT8_C(  23),
                           INT8_C( -83), INT8_C( -90), INT8_C(   9), INT8_C(  94),
                           INT8_C(  91), INT8_C(  69), INT8_C( -51), INT8_C(-103),
                           INT8_C( -72), INT8_C( -45), INT8_C(  16), INT8_C( 108),
                           INT8_C( -80), INT8_C(  27), INT8_C(  58), INT8_C( -83)),
      simde_mm512_set_epi8(INT8_C(  86), INT8_C(  52), INT8_C( -80), INT8_C(  57),
                           INT8_C( -43), INT8_C(  69), INT8_C( -11), INT8_C(  -8),
                           INT8_C( -26), INT8_C(  64), INT8_C(  12), INT8_C( -65),
                           INT8_C(  -9), INT8_C(-122), INT8_C(  79), INT8_C(  39),
                           INT8_C(  70), INT8_C( -10), INT8_C(-120), INT8_C(   2),
                           INT8_C( -49), INT8_C( -82), INT8_C(  41), INT8_C( -58),
                           INT8_C(  -4), INT8_C( 106), INT8_C(  84), INT8_C(-118),
                           INT8_C(  15), INT8_C( 103), INT8_C( 100), INT8_C(-108),
                           INT8_C(  -6), INT8_C(  22), INT8_C(  94), INT8_C(-114),
                           INT8_C( 119), INT8_C(  12), INT8_C(   8), INT8_C( -97),
                           INT8_C( -35), INT8_C( -44), INT8_C(-125), INT8_C( -80),
                           INT8_C(  55), INT8_C(   1), INT8_C(  56), INT8_C(  -6),
                           INT8_C(  36), INT8_C(-115), INT8_C( -92), INT8_C( -41),
                           INT8_C( -20), INT8_C(  27), INT8_C( -95), INT8_C(  14),
                           INT8_C(  99), INT8_C(   0), INT8_C( 114), INT8_C( -68),
                           INT8_C( -81), INT8_C(-114), INT8_C(-120), INT8_C(  31)) },
    { simde_mm512_set_epi8(INT8_C(  17), INT8_C(  99), INT8_C( -13), INT8_C( -49),
                           INT8_C(  45), INT8_C(-128), INT8_C(  55), INT8_C( 105),
                           INT8_C( -34), INT8_C( -51), INT8_C( -97), INT8_C(-103),
                           INT8_C(-124), INT8_C( 111), INT8_C(  74), INT8_C(  75),
                           INT8_C( 102), INT8_C(  98), INT8_C(-117), INT8_C(   9),
                           INT8_C( -74), INT8_C(  61), INT8_C(  99), INT8_C( 124),
                           INT8_C(  79), INT8_C(-114), INT8_C(  19), INT8_C(  97),
                           INT8_C(-100), INT8_C(-124), INT8_C( -17), INT8_C( -62),
                           INT8_C(  25), INT8_C(  -3), INT8_C(  -7), INT8_C(  72),
                           INT8_C(-117), INT8_C( -27), INT8_C( -56), INT8_C(  92),
                           INT8_C( -20), INT8_C( -53), INT8_C(   2), INT8_C( -38),
                           INT8_C( -81), INT8_C(  59), INT8_C(  66), INT8_C(  90),
                           INT8_C(  36), INT8_C( 100), INT8_C( 112), INT8_C( 123),
                           INT8_C( -72), INT8_C( -97), INT8_C(-115), INT8_C(  17),
                           INT8_C( -93), INT8_C(-122), INT8_C(  31), INT8_C(  27),
                           INT8_C( 109), INT8_C( 115), INT8_C(  53), INT8_C( -96)),
      simde_mm512_set_epi8(INT8_C( -43), INT8_C( -18), INT8_C( 114), INT8_C( -29),
                           INT8_C( 118), INT8_C(  -1), INT8_C( -20), INT8_C( -38),
                           INT8_C( -80), INT8_C(  88), INT8_C(-111), INT8_C( -91),
                           INT8_C(  44), INT8_C( -72), INT8_C( 106), INT8_C(  19),
                           INT8_C( -46), INT8_C( 107), INT8_C(  46), INT8_C(  44),
                           INT8_C( -65), INT8_C(-128), INT8_C(  41), INT8_C(  44),
                           INT8_C(  68), INT8_C(  69), INT8_C( -78), INT8_C( -47),
                           INT8_C( 109), INT8_C( 120), INT8_C( -57), INT8_C( -95),
                           INT8_C(  95), INT8_C(  80), INT8_C( -30), INT8_C(  97),
                           INT8_C( -48), INT8_C( -97), INT8_C( 111), INT8_C( -80),
                           INT8_C(-122), INT8_C( -81), INT8_C( -71), INT8_C(  85),
                           INT8_C(  77), INT8_C( -42), INT8_C(-115), INT8_C( -77),
                           INT8_C(  29), INT8_C(  77), INT8_C(  64), INT8_C( -20),
                           INT8_C(  27), INT8_C(  41), INT8_C(  13), INT8_C( 109),
                           INT8_C(  22), INT8_C( -98), INT8_C(  20), INT8_C( -28),
                           INT8_C(  66), INT8_C(  -7), INT8_C(-113), INT8_C(-119)),
      simde_mm512_set_epi8(INT8_C(  60), INT8_C( 117), INT8_C(-127), INT8_C( -20),
                           INT8_C( -73), INT8_C(-127), INT8_C(  75), INT8_C(-113),
                           INT8_C(  46), INT8_C( 117), INT8_C(  14), INT8_C( -12),
                           INT8_C(  88), INT8_C( -73), INT8_C( -32), INT8_C(  56),
                           INT8_C(-108), INT8_C(  -9), INT8_C(  93), INT8_C( -35),
                           INT8_C(  -9), INT8_C( -67), INT8_C(  58), INT8_C(  80),
                           INT8_C(  11), INT8_C(  73), INT8_C(  97), INT8_C(-112),
                           INT8_C(  47), INT8_C(  12), INT8_C(  40), INT8_C(  33),
                           INT8_C( -70), INT8_C( -83), INT8_C(  23), INT8_C( -25),
                           INT8_C( -69), INT8_C(  70), INT8_C(  89), INT8_C( -84),
                           INT8_C( 102), INT8_C(  28), INT8_C(  73), INT8_C(-123),
                           INT8_C(  98), INT8_C( 101), INT8_C( -75), INT8_C( -89),
                           INT8_C(   7), INT8_C(  23), INT8_C(  48), INT8_C(-113),
                           INT8_C( -99), INT8_C( 118), INT8_C(-128), INT8_C( -92),
                           INT8_C(-115), INT8_C( -24), INT8_C(  11), INT8_C(  55),
                           INT8_C(  43), INT8_C( 122), INT8_C( -90), INT8_C(  23)) },
    { simde_mm512_set_epi8(INT8_C(-124), INT8_C( -73), INT8_C(  74), INT8_C(   5),
                           INT8_C(  -9), INT8_C(  17), INT8_C( -81), INT8_C( -54),
                           INT8_C(  -5), INT8_C( -33), INT8_C( -12), INT8_C(  26),
                           INT8_C(  86), INT8_C( 122), INT8_C( -44), INT8_C( -23),
                           INT8_C(   0), INT8_C(  43), INT8_C( -25), INT8_C(-122),
                           INT8_C( -79), INT8_C(-122), INT8_C( -88), INT8_C(-121),
                           INT8_C(-102), INT8_C(  66), INT8_C( -93), INT8_C( 105),
                           INT8_C( 109), INT8_C( -68), INT8_C(  24), INT8_C( -54),
                           INT8_C(  40), INT8_C(  68), INT8_C(   2), INT8_C(  60),
                           INT8_C(   0), INT8_C(   5), INT8_C(  59), INT8_C( -54),
                           INT8_C( -76), INT8_C(  27), INT8_C( -23), INT8_C(  77),
                           INT8_C(-108), INT8_C( -28), INT8_C(-114), INT8_C(  56),
                           INT8_C( -54), INT8_C(-108), INT8_C( -15), INT8_C( -89),
                           INT8_C(-103), INT8_C( -45), INT8_C(  74), INT8_C(  -3),
                           INT8_C(-108), INT8_C(  55), INT8_C( -79), INT8_C( -62),
                           INT8_C(  14), INT8_C( 106), INT8_C( -16), INT8_C( -10)),
      simde_mm512_set_epi8(INT8_C( -47), INT8_C( 124), INT8_C(  57), INT8_C( -74),
                           INT8_C(  20), INT8_C( 124), INT8_C(  70), INT8_C( -69),
                           INT8_C( -65), INT8_C( -12), INT8_C( 124), INT8_C( -90),
                           INT8_C(-113), INT8_C(  63), INT8_C( -79), INT8_C( -70),
                           INT8_C( -76), INT8_C( -34), INT8_C( -60), INT8_C(  -4),
                           INT8_C( -41), INT8_C(  60), INT8_C(  77), INT8_C( -57),
                           INT8_C(  13), INT8_C(   2), INT8_C( 111), INT8_C( -39),
                           INT8_C(  41), INT8_C(  54), INT8_C( -37), INT8_C( 114),
                           INT8_C(  92), INT8_C(-111), INT8_C(  77), INT8_C(  14),
                           INT8_C(-104), INT8_C( -39), INT8_C( -74), INT8_C(  66),
                           INT8_C(  16), INT8_C( -26), INT8_C( -89), INT8_C(-114),
                           INT8_C( -68), INT8_C(   6), INT8_C(  62), INT8_C( -93),
                           INT8_C(  55), INT8_C(-113), INT8_C( -60), INT8_C( -56),
                           INT8_C( -37), INT8_C(   2), INT8_C( -15), INT8_C(  88),
                           INT8_C(  26), INT8_C(  54), INT8_C(  82), INT8_C( 124),
                           INT8_C( -38), INT8_C(-107), INT8_C(  40), INT8_C(  13)),
      simde_mm512_set_epi8(INT8_C( -77), INT8_C(  59), INT8_C(  17), INT8_C(  79),
                           INT8_C( -29), INT8_C(-107), INT8_C( 105), INT8_C(  15),
                           INT8_C(  60), INT8_C( -21), INT8_C( 120), INT8_C( 116),
                           INT8_C( -57), INT8_C(  59), INT8_C(  35), INT8_C(  47),
                           INT8_C(  76), INT8_C(  77), INT8_C(  35), INT8_C(-118),
                           INT8_C( -38), INT8_C(  74), INT8_C(  91), INT8_C( -64),
                           INT8_C(-115), INT8_C(  64), INT8_C(  52), INT8_C(-112),
                           INT8_C(  68), INT8_C(-122), INT8_C(  61), INT8_C(  88),
                           INT8_C( -52), INT8_C( -77), INT8_C( -75), INT8_C(  46),
                           INT8_C( 104), INT8_C(  44), INT8_C(-123), INT8_C(-120),
                           INT8_C( -92), INT8_C(  53), INT8_C(  66), INT8_C( -65),
                           INT8_C( -40), INT8_C( -34), INT8_C(  80), INT8_C(-107),
                           INT8_C(-109), INT8_C(   5), INT8_C(  45), INT8_C( -33),
                           INT8_C( -66), INT8_C( -47), INT8_C(  89), INT8_C( -91),
                           INT8_C( 122), INT8_C(   1), INT8_C(  95), INT8_C(  70),
                           INT8_C(  52), INT8_C( -43), INT8_C( -56), INT8_C( -23)) },
    { simde_mm512_set_epi8(INT8_C(   5), INT8_C( -68), INT8_C( -18), INT8_C( -37),
                           INT8_C(   5), INT8_C(  16), INT8_C(-109), INT8_C( -67),
                           INT8_C( -62), INT8_C(  -4), INT8_C(  14), INT8_C(-109),
                           INT8_C( -29), INT8_C(-121), INT8_C(-109), INT8_C( -55),
                           INT8_C(   1), INT8_C( -38), INT8_C( 107), INT8_C(  55),
                           INT8_C( -36), INT8_C( -76), INT8_C(  35), INT8_C( -40),
                           INT8_C(  10), INT8_C( -90), INT8_C( -48), INT8_C(-112),
                           INT8_C(  -9), INT8_C( -53), INT8_C( 105), INT8_C(  27),
                           INT8_C( -97), INT8_C(-124), INT8_C(   4), INT8_C( -36),
                           INT8_C( -16), INT8_C( -87), INT8_C( -89), INT8_C(-104),
                           INT8_C( -30), INT8_C(-101), INT8_C(  69), INT8_C(  79),
                           INT8_C(  59), INT8_C( -97), INT8_C( -15), INT8_C(  17),
                           INT8_C( 106), INT8_C( -85), INT8_C( 126), INT8_C(-121),
                           INT8_C( -91), INT8_C(  26), INT8_C(-115), INT8_C(-117),
                           INT8_C(  91), INT8_C(  73), INT8_C( -60), INT8_C(  69),
                           INT8_C( -23), INT8_C(  48), INT8_C(  70), INT8_C(  -8)),
      simde_mm512_set_epi8(INT8_C(  91), INT8_C(-103), INT8_C(  69), INT8_C(  61),
                           INT8_C( -82), INT8_C(  73), INT8_C( 122), INT8_C( -22),
                           INT8_C( 122), INT8_C(  76), INT8_C(  -9), INT8_C( 121),
                           INT8_C(-123), INT8_C(-119), INT8_C(-127), INT8_C( 126),
                           INT8_C( 105), INT8_C(  10), INT8_C(-120), INT8_C(-127),
                           INT8_C( -50), INT8_C(  15), INT8_C( -93), INT8_C( -86),
                           INT8_C(-125), INT8_C(  45), INT8_C( -39), INT8_C(-119),
                           INT8_C(  74), INT8_C( -92), INT8_C( -78), INT8_C(  53),
                           INT8_C(  17), INT8_C( -21), INT8_C( 105), INT8_C(-102),
                           INT8_C(  -1), INT8_C( -19), INT8_C( 110), INT8_C( -84),
                           INT8_C( -93), INT8_C(  19), INT8_C( -98), INT8_C(-128),
                           INT8_C( -23), INT8_C(  49), INT8_C( 100), INT8_C( 122),
                           INT8_C( -96), INT8_C(-103), INT8_C(  60), INT8_C( -24),
                           INT8_C(  23), INT8_C( -52), INT8_C( -37), INT8_C( -56),
                           INT8_C( -50), INT8_C(   4), INT8_C( -69), INT8_C(   1),
                           INT8_C( -25), INT8_C( -10), INT8_C(  93), INT8_C(  51)),
      simde_mm512_set_epi8(INT8_C( -86), INT8_C(  35), INT8_C( -87), INT8_C( -98),
                           INT8_C(  87), INT8_C( -57), INT8_C(  25), INT8_C( -45),
                           INT8_C(  72), INT8_C( -80), INT8_C(  23), INT8_C(  26),
                           INT8_C(  94), INT8_C(  -2), INT8_C(  18), INT8_C(  75),
                           INT8_C(-104), INT8_C( -48), INT8_C( -29), INT8_C( -74),
                           INT8_C(  14), INT8_C( -91), INT8_C(-128), INT8_C(  46),
                           INT8_C(-121), INT8_C( 121), INT8_C(  -9), INT8_C(   7),
                           INT8_C( -83), INT8_C(  39), INT8_C( -73), INT8_C( -26),
                           INT8_C(-114), INT8_C(-103), INT8_C(-101), INT8_C(  66),
                           INT8_C( -15), INT8_C( -68), INT8_C(  57), INT8_C( -20),
                           INT8_C(  63), INT8_C(-120), INT8_C( -89), INT8_C( -49),
                           INT8_C(  82), INT8_C( 110), INT8_C(-115), INT8_C(-105),
                           INT8_C( -54), INT8_C(  18), INT8_C(  66), INT8_C( -97),
                           INT8_C(-114), INT8_C(  78), INT8_C( -78), INT8_C( -61),
                           INT8_C(-115), INT8_C(  69), INT8_C(   9), INT8_C(  68),
                           INT8_C(   2), INT8_C(  58), INT8_C( -23), INT8_C( -59)) },
    { simde_mm512_set_epi8(INT8_C( -89), INT8_C(  43), INT8_C(  52), INT8_C(  82),
                           INT8_C( -37), INT8_C(  55), INT8_C( 112), INT8_C( -22),
                           INT8_C( -75), INT8_C( -36), INT8_C( -34), INT8_C( -15),
                           INT8_C(  35), INT8_C( -42), INT8_C(-101), INT8_C(  -5),
                           INT8_C(   2), INT8_C(  35), INT8_C(  14), INT8_C( -73),
                           INT8_C( -50), INT8_C( -33), INT8_C( -65), INT8_C(  94),
                           INT8_C(  -6), INT8_C( -21), INT8_C( -28), INT8_C(  21),
                           INT8_C( 102), INT8_C( -87), INT8_C( 114), INT8_C( 125),
                           INT8_C( 113), INT8_C( 124), INT8_C(-121), INT8_C(-122),
                           INT8_C(  23), INT8_C( 107), INT8_C(  24), INT8_C( 126),
                           INT8_C(  80), INT8_C(  59), INT8_C(  39), INT8_C( -61),
                           INT8_C(-105), INT8_C(  32), INT8_C(  55), INT8_C(  -9),
                           INT8_C(  60), INT8_C(-125), INT8_C(  72), INT8_C( -36),
                           INT8_C(  77), INT8_C( -65), INT8_C( 117), INT8_C( -85),
                           INT8_C(  98), INT8_C( -83), INT8_C( -69), INT8_C( -52),
                           INT8_C(  41), INT8_C( -10), INT8_C( -18), INT8_C(  56)),
      simde_mm512_set_epi8(INT8_C(  22), INT8_C( 122), INT8_C( -90), INT8_C(   2),
                           INT8_C( -65), INT8_C(  51), INT8_C( -94), INT8_C( -50),
                           INT8_C( -15), INT8_C(  19), INT8_C( -19), INT8_C(  66),
                           INT8_C( 119), INT8_C(-118), INT8_C(-112), INT8_C(-116),
                           INT8_C(  44), INT8_C( -12), INT8_C(  31), INT8_C(  43),
                           INT8_C( -16), INT8_C( -37), INT8_C( -24), INT8_C( -32),
                           INT8_C( -95), INT8_C( -86), INT8_C( -96), INT8_C(  80),
                           INT8_C(  68), INT8_C(  13), INT8_C(  -8), INT8_C(  67),
                           INT8_C( 107), INT8_C(-125), INT8_C( 104), INT8_C( -80),
                           INT8_C(  97), INT8_C( -78), INT8_C( 106), INT8_C( -53),
                           INT8_C( -36), INT8_C( -90), INT8_C(  74), INT8_C( -72),
                           INT8_C(  59), INT8_C( -81), INT8_C(  -8), INT8_C( -25),
                           INT8_C( -55), INT8_C( -99), INT8_C(  20), INT8_C(   9),
                           INT8_C( -89), INT8_C( -90), INT8_C( 108), INT8_C(  56),
                           INT8_C( -19), INT8_C(  81), INT8_C( 122), INT8_C(   6),
                           INT8_C(-119), INT8_C( 122), INT8_C( -35), INT8_C( 106)),
      simde_mm512_set_epi8(INT8_C(-111), INT8_C( -79), INT8_C(-114), INT8_C(  80),
                           INT8_C(  28), INT8_C(   4), INT8_C( -50), INT8_C(  28),
                           INT8_C( -60), INT8_C( -55), INT8_C( -15), INT8_C( -81),
                           INT8_C( -84), INT8_C(  76), INT8_C(  11), INT8_C( 111),
                           INT8_C( -42), INT8_C(  47), INT8_C( -17), INT8_C(-116),
                           INT8_C( -34), INT8_C(   4), INT8_C( -41), INT8_C( 126),
                           INT8_C(  89), INT8_C(  65), INT8_C(  68), INT8_C( -59),
                           INT8_C(  34), INT8_C(-100), INT8_C( 122), INT8_C(  58),
                           INT8_C(   6), INT8_C(  -7), INT8_C(  31), INT8_C( -42),
                           INT8_C( -74), INT8_C( -71), INT8_C( -82), INT8_C( -77),
                           INT8_C( 116), INT8_C(-107), INT8_C( -35), INT8_C(  11),
                           INT8_C(  92), INT8_C( 113), INT8_C(  63), INT8_C(  16),
                           INT8_C( 115), INT8_C( -26), INT8_C(  52), INT8_C( -45),
                           INT8_C( -90), INT8_C(  25), INT8_C(   9), INT8_C( 115),
                           INT8_C( 117), INT8_C(  92), INT8_C(  65), INT8_C( -58),
                           INT8_C( -96), INT8_C( 124), INT8_C(  17), INT8_C( -50)) },
    { simde_mm512_set_epi8(INT8_C( 105), INT8_C(-115), INT8_C( 121), INT8_C(-101),
                           INT8_C(   0), INT8_C(  63), INT8_C( -42), INT8_C( -34),
                           INT8_C(  -5), INT8_C( -47), INT8_C(-123), INT8_C( -52),
                           INT8_C( -86), INT8_C( -28), INT8_C( -63), INT8_C(  20),
                           INT8_C( -60), INT8_C( -63), INT8_C(  99), INT8_C(  78),
                           INT8_C(  56), INT8_C( -72), INT8_C( -55), INT8_C( -72),
                           INT8_C(  79), INT8_C( -81), INT8_C( 124), INT8_C( -85),
                           INT8_C( -65), INT8_C( 122), INT8_C( -25), INT8_C( -58),
                           INT8_C( -64), INT8_C(  52), INT8_C( -12), INT8_C(   1),
                           INT8_C( -62), INT8_C( -28), INT8_C( -28), INT8_C(-104),
                           INT8_C(  54), INT8_C(-103), INT8_C( -55), INT8_C( -22),
                           INT8_C( -91), INT8_C(   6), INT8_C(  -9), INT8_C( -31),
                           INT8_C(  18), INT8_C(-111), INT8_C(  58), INT8_C(  71),
                           INT8_C( -73), INT8_C( -96), INT8_C(  28), INT8_C(  -4),
                           INT8_C(  47), INT8_C(  66), INT8_C( 121), INT8_C(  38),
                           INT8_C(  69), INT8_C(-107), INT8_C( -57), INT8_C(-120)),
      simde_mm512_set_epi8(INT8_C( -49), INT8_C(  15), INT8_C( -15), INT8_C( -59),
                           INT8_C(-113), INT8_C( 102), INT8_C( -48), INT8_C( -78),
                           INT8_C(  31), INT8_C(  94), INT8_C(  79), INT8_C(  92),
                           INT8_C( 106), INT8_C( -68), INT8_C(  96), INT8_C( -97),
                           INT8_C( -27), INT8_C(-118), INT8_C( -11), INT8_C( 112),
                           INT8_C(-125), INT8_C(  70), INT8_C(  26), INT8_C( -38),
                           INT8_C( -16), INT8_C(-112), INT8_C(  10), INT8_C(  98),
                           INT8_C(  -4), INT8_C( 120), INT8_C( -33), INT8_C(-127),
                           INT8_C( -65), INT8_C( -40), INT8_C(  88), INT8_C(  -6),
                           INT8_C(  74), INT8_C(  41), INT8_C(  39), INT8_C(  79),
                           INT8_C(-125), INT8_C(  -7), INT8_C(  62), INT8_C(-112),
                           INT8_C(-119), INT8_C(  -9), INT8_C(  71), INT8_C( -68),
                           INT8_C( -79), INT8_C(  48), INT8_C( -20), INT8_C( -97),
                           INT8_C(-116), INT8_C( 120), INT8_C( -65), INT8_C(   6),
                           INT8_C( -32), INT8_C( -75), INT8_C(-106), INT8_C(  26),
                           INT8_C( -96), INT8_C(  50), INT8_C( -45), INT8_C(  16)),
      simde_mm512_set_epi8(INT8_C(-102), INT8_C( 126), INT8_C(-120), INT8_C( -42),
                           INT8_C( 113), INT8_C( -39), INT8_C(   6), INT8_C(  44),
                           INT8_C( -36), INT8_C( 115), INT8_C(  54), INT8_C( 112),
                           INT8_C(  64), INT8_C(  40), INT8_C(  97), INT8_C( 117),
                           INT8_C( -33), INT8_C(  55), INT8_C( 110), INT8_C( -34),
                           INT8_C( -75), INT8_C( 114), INT8_C( -81), INT8_C( -34),
                           INT8_C(  95), INT8_C(  31), INT8_C( 114), INT8_C(  73),
                           INT8_C( -61), INT8_C(   2), INT8_C(   8), INT8_C(  69),
                           INT8_C(   1), INT8_C(  92), INT8_C(-100), INT8_C(   7),
                           INT8_C( 120), INT8_C( -69), INT8_C( -67), INT8_C(  73),
                           INT8_C( -77), INT8_C( -96), INT8_C(-117), INT8_C(  90),
                           INT8_C(  28), INT8_C(  15), INT8_C( -80), INT8_C(  37),
                           INT8_C(  97), INT8_C(  97), INT8_C(  78), INT8_C( -88),
                           INT8_C(  43), INT8_C(  40), INT8_C(  93), INT8_C( -10),
                           INT8_C(  79), INT8_C(-115), INT8_C( -29), INT8_C(  12),
                           INT8_C( -91), INT8_C(  99), INT8_C( -12), INT8_C( 120)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m512i r = simde_mm512_sub_epi8(test_vec[i].a, test_vec[i].b);
    simde_assert_m512i_i8(r, ==, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm512_mask_sub_epi8(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m512i src;
    simde__mmask64 k;
    simde__m512i a;
    simde__m512i b;
    simde__m512i r;
  } test_vec[8] = {
    { simde_mm512_set_epi8(INT8_C( 121), INT8_C(  -8), INT8_C(-121), INT8_C( -19),
                           INT8_C(  19), INT8_C(  -3), INT8_C(  10), INT8_C( -37),
                           INT8_C(  96), INT8_C(  15), INT8_C( -45), INT8_C( -44),
                           INT8_C( -83), INT8_C( -37), INT8_C(   8), INT8_C( 111),
                           INT8_C( -30), INT8_C( -99), INT8_C( 116), INT8_C( 112),
                           INT8_C(  67), INT8_C(-123), INT8_C(  59), INT8_C( -62),
                           INT8_C(  33), INT8_C(  51), INT8_C( -16), INT8_C( -35),
                           INT8_C( -53), INT8_C( 108), INT8_C( -37), INT8_C( -15),
                           INT8_C(  26), INT8_C(  83), INT8_C( -47), INT8_C( -23),
                           INT8_C(   6), INT8_C(  52), INT8_C( -19), INT8_C( 108),
                           INT8_C( -33), INT8_C( 120), INT8_C(  55), INT8_C(-128),
                           INT8_C( -46), INT8_C( 117), INT8_C(  41), INT8_C( -54),
                           INT8_C( -99), INT8_C( -39), INT8_C( 117), INT8_C(  57),
                           INT8_C(  78), INT8_C(-110), INT8_C(  -8), INT8_C(-114),
                           INT8_C( -54), INT8_C(  20), INT8_C( 112), INT8_C(  39),
                           INT8_C( -60), INT8_C(  36), INT8_C( -53), INT8_C(  53)),
      UINT64_C(           567574400),
      simde_mm512_set_epi8(INT8_C( 115), INT8_C(  65), INT8_C(-123), INT8_C( 116),
                           INT8_C( -46), INT8_C( -68), INT8_C(  -8), INT8_C(  96),
                           INT8_C( -90), INT8_C( -14), INT8_C(  27), INT8_C(  33),
                           INT8_C(  21), INT8_C(  58), INT8_C( -12), INT8_C( -76),
                           INT8_C(  70), INT8_C( -70), INT8_C(  -4), INT8_C(  64),
                           INT8_C(  35), INT8_C( -32), INT8_C(-115), INT8_C( 109),
                           INT8_C( -69), INT8_C( -61), INT8_C(-126), INT8_C(  45),
                           INT8_C(  93), INT8_C( 100), INT8_C( -53), INT8_C( 105),
                           INT8_C( -51), INT8_C(  43), INT8_C( -96), INT8_C( -95),
                           INT8_C(  86), INT8_C( -66), INT8_C( -47), INT8_C( 123),
                           INT8_C(  63), INT8_C(  16), INT8_C( -66), INT8_C(  12),
                           INT8_C( 115), INT8_C( -39), INT8_C(  10), INT8_C( 108),
                           INT8_C(-120), INT8_C( 110), INT8_C( -25), INT8_C(   7),
                           INT8_C( 105), INT8_C( -93), INT8_C(  68), INT8_C(   3),
                           INT8_C( 113), INT8_C( -50), INT8_C( -34), INT8_C(  22),
                           INT8_C( -61), INT8_C(  75), INT8_C(  28), INT8_C( 116)),
      simde_mm512_set_epi8(INT8_C(  26), INT8_C(  -6), INT8_C( -92), INT8_C(   7),
                           INT8_C(-105), INT8_C( -92), INT8_C(  38), INT8_C( -63),
                           INT8_C(  77), INT8_C(  86), INT8_C( 113), INT8_C( -48),
                           INT8_C( 108), INT8_C( -92), INT8_C(  69), INT8_C(  74),
                           INT8_C(  67), INT8_C(  96), INT8_C( -34), INT8_C(  78),
                           INT8_C( 124), INT8_C(   9), INT8_C(  -1), INT8_C( -86),
                           INT8_C( -35), INT8_C(  26), INT8_C(  67), INT8_C(  46),
                           INT8_C(  75), INT8_C(-119), INT8_C(  68), INT8_C(  31),
                           INT8_C( -52), INT8_C(-102), INT8_C(  -4), INT8_C( 118),
                           INT8_C(   0), INT8_C( -44), INT8_C( 123), INT8_C( -73),
                           INT8_C(  84), INT8_C(  30), INT8_C(  -8), INT8_C(  64),
                           INT8_C( -20), INT8_C( -79), INT8_C( -85), INT8_C( -23),
                           INT8_C( -34), INT8_C(  -4), INT8_C( -85), INT8_C( 107),
                           INT8_C(  -6), INT8_C(  16), INT8_C( -66), INT8_C(-113),
                           INT8_C(  60), INT8_C( 127), INT8_C( -54), INT8_C( -36),
                           INT8_C(  73), INT8_C( -97), INT8_C( -65), INT8_C(  63)),
      simde_mm512_set_epi8(INT8_C( 121), INT8_C(  -8), INT8_C(-121), INT8_C( -19),
                           INT8_C(  19), INT8_C(  -3), INT8_C(  10), INT8_C( -37),
                           INT8_C(  96), INT8_C(  15), INT8_C( -45), INT8_C( -44),
                           INT8_C( -83), INT8_C( -37), INT8_C(   8), INT8_C( 111),
                           INT8_C( -30), INT8_C( -99), INT8_C( 116), INT8_C( 112),
                           INT8_C(  67), INT8_C(-123), INT8_C(  59), INT8_C( -62),
                           INT8_C(  33), INT8_C(  51), INT8_C( -16), INT8_C( -35),
                           INT8_C( -53), INT8_C( 108), INT8_C( -37), INT8_C( -15),
                           INT8_C(  26), INT8_C(  83), INT8_C( -92), INT8_C( -23),
                           INT8_C(   6), INT8_C(  52), INT8_C( -19), INT8_C( -60),
                           INT8_C( -21), INT8_C( -14), INT8_C(  55), INT8_C( -52),
                           INT8_C( -46), INT8_C(  40), INT8_C(  41), INT8_C( -54),
                           INT8_C( -99), INT8_C( 114), INT8_C(  60), INT8_C(-100),
                           INT8_C( 111), INT8_C(-109), INT8_C(-122), INT8_C( 116),
                           INT8_C(  53), INT8_C(  20), INT8_C( 112), INT8_C(  39),
                           INT8_C( -60), INT8_C(  36), INT8_C( -53), INT8_C(  53)) },
    { simde_mm512_set_epi8(INT8_C(  44), INT8_C(  68), INT8_C(  96), INT8_C(  88),
                           INT8_C(   1), INT8_C(  68), INT8_C(  46), INT8_C(  19),
                           INT8_C(  31), INT8_C(  85), INT8_C(  35), INT8_C(  68),
                           INT8_C( -79), INT8_C(  41), INT8_C(  28), INT8_C(  92),
                           INT8_C( -26), INT8_C(  20), INT8_C( -16), INT8_C(  -7),
                           INT8_C(  41), INT8_C(  71), INT8_C(  88), INT8_C(  39),
                           INT8_C( -42), INT8_C(  76), INT8_C(  40), INT8_C( 108),
                           INT8_C( -87), INT8_C(-126), INT8_C(  42), INT8_C(  58),
                           INT8_C(   2), INT8_C( -23), INT8_C(   5), INT8_C(-116),
                           INT8_C(  34), INT8_C(  66), INT8_C(  28), INT8_C(  86),
                           INT8_C(  50), INT8_C( -67), INT8_C(  20), INT8_C(  73),
                           INT8_C(  27), INT8_C( -29), INT8_C(  84), INT8_C( 112),
                           INT8_C( 104), INT8_C(  53), INT8_C( -89), INT8_C(-113),
                           INT8_C(  -4), INT8_C(  94), INT8_C(  75), INT8_C(  21),
                           INT8_C(-120), INT8_C( -25), INT8_C( 111), INT8_C(-128),
                           INT8_C(  -4), INT8_C(  58), INT8_C(-115), INT8_C(   4)),
      UINT64_C(          2779079274),
      simde_mm512_set_epi8(INT8_C( -70), INT8_C( -58), INT8_C(  69), INT8_C(  -7),
                           INT8_C( 115), INT8_C( -10), INT8_C( -39), INT8_C(  78),
                           INT8_C(  56), INT8_C( 116), INT8_C( 104), INT8_C( -92),
                           INT8_C(   5), INT8_C( -47), INT8_C(  27), INT8_C(  94),
                           INT8_C(-126), INT8_C(  88), INT8_C(  80), INT8_C( 112),
                           INT8_C(  21), INT8_C(  62), INT8_C(  86), INT8_C(-103),
                           INT8_C(  66), INT8_C(  -9), INT8_C( -26), INT8_C(  47),
                           INT8_C( -50), INT8_C(-118), INT8_C( 115), INT8_C(  49),
                           INT8_C(  42), INT8_C(   6), INT8_C(  92), INT8_C(   2),
                           INT8_C(  63), INT8_C(  -6), INT8_C( -32), INT8_C(  15),
                           INT8_C(  66), INT8_C(  82), INT8_C(  -9), INT8_C( -79),
                           INT8_C(-123), INT8_C(  52), INT8_C( -90), INT8_C(-111),
                           INT8_C(  62), INT8_C( -43), INT8_C( -50), INT8_C(  62),
                           INT8_C(   4), INT8_C( -92), INT8_C(  86), INT8_C( -32),
                           INT8_C(  69), INT8_C( -15), INT8_C(  55), INT8_C(-127),
                           INT8_C( -36), INT8_C(  56), INT8_C(  46), INT8_C(-119)),
      simde_mm512_set_epi8(INT8_C(  18), INT8_C(  68), INT8_C(  -9), INT8_C(  64),
                           INT8_C(-111), INT8_C(  37), INT8_C( -82), INT8_C( -95),
                           INT8_C(  54), INT8_C(  75), INT8_C( -77), INT8_C( -34),
                           INT8_C(  52), INT8_C( -80), INT8_C( -94), INT8_C(  90),
                           INT8_C(   0), INT8_C(  -8), INT8_C( 123), INT8_C(-111),
                           INT8_C(  16), INT8_C( 125), INT8_C( -51), INT8_C(  99),
                           INT8_C( -22), INT8_C( 121), INT8_C(  63), INT8_C( -55),
                           INT8_C( 117), INT8_C( 109), INT8_C(-126), INT8_C(-111),
                           INT8_C(  47), INT8_C(-127), INT8_C( 109), INT8_C(  -9),
                           INT8_C( -42), INT8_C(  36), INT8_C( -32), INT8_C( 115),
                           INT8_C( -89), INT8_C(   7), INT8_C(  90), INT8_C(  46),
                           INT8_C( -83), INT8_C( -35), INT8_C(  30), INT8_C( -19),
                           INT8_C( -99), INT8_C( -56), INT8_C( -70), INT8_C(  73),
                           INT8_C( -61), INT8_C(  27), INT8_C( 117), INT8_C(  47),
                           INT8_C(   0), INT8_C( -45), INT8_C(  59), INT8_C(  51),
                           INT8_C( -35), INT8_C(  70), INT8_C(  73), INT8_C(  33)),
      simde_mm512_set_epi8(INT8_C(  44), INT8_C(  68), INT8_C(  96), INT8_C(  88),
                           INT8_C(   1), INT8_C(  68), INT8_C(  46), INT8_C(  19),
                           INT8_C(  31), INT8_C(  85), INT8_C(  35), INT8_C(  68),
                           INT8_C( -79), INT8_C(  41), INT8_C(  28), INT8_C(  92),
                           INT8_C( -26), INT8_C(  20), INT8_C( -16), INT8_C(  -7),
                           INT8_C(  41), INT8_C(  71), INT8_C(  88), INT8_C(  39),
                           INT8_C( -42), INT8_C(  76), INT8_C(  40), INT8_C( 108),
                           INT8_C( -87), INT8_C(-126), INT8_C(  42), INT8_C(  58),
                           INT8_C(  -5), INT8_C( -23), INT8_C( -17), INT8_C(-116),
                           INT8_C(  34), INT8_C( -42), INT8_C(  28), INT8_C(-100),
                           INT8_C(-101), INT8_C( -67), INT8_C( -99), INT8_C(  73),
                           INT8_C(  27), INT8_C(  87), INT8_C(  84), INT8_C( -92),
                           INT8_C( 104), INT8_C(  13), INT8_C(  20), INT8_C(-113),
                           INT8_C(  -4), INT8_C(  94), INT8_C( -31), INT8_C(  21),
                           INT8_C(-120), INT8_C(  30), INT8_C(  -4), INT8_C(-128),
                           INT8_C(  -1), INT8_C(  58), INT8_C( -27), INT8_C(   4)) },
    { simde_mm512_set_epi8(INT8_C( -35), INT8_C(  32), INT8_C( -43), INT8_C( 108),
                           INT8_C(  83), INT8_C( -59), INT8_C(  -4), INT8_C( 125),
                           INT8_C( -31), INT8_C( 118), INT8_C( -25), INT8_C( -91),
                           INT8_C(  50), INT8_C( -74), INT8_C(  78), INT8_C(  95),
                           INT8_C( -84), INT8_C( -63), INT8_C(  87), INT8_C(-108),
                           INT8_C(  28), INT8_C( -70), INT8_C(  77), INT8_C(-113),
                           INT8_C( -20), INT8_C(  50), INT8_C(  95), INT8_C(-108),
                           INT8_C( 105), INT8_C( 114), INT8_C(-109), INT8_C(  19),
                           INT8_C( -79), INT8_C( 106), INT8_C(  61), INT8_C( -12),
                           INT8_C( 126), INT8_C(-117), INT8_C( 126), INT8_C(-125),
                           INT8_C( -93), INT8_C(  69), INT8_C( 104), INT8_C( 119),
                           INT8_C(  63), INT8_C(  95), INT8_C(-106), INT8_C( -66),
                           INT8_C( -47), INT8_C( -45), INT8_C( -60), INT8_C( -54),
                           INT8_C(-109), INT8_C( -45), INT8_C( -86), INT8_C( 121),
                           INT8_C(  23), INT8_C( -12), INT8_C(  67), INT8_C(  -6),
                           INT8_C( -37), INT8_C(  92), INT8_C( -35), INT8_C(  99)),
      UINT64_C(          1100920337),
      simde_mm512_set_epi8(INT8_C(  13), INT8_C( 104), INT8_C(  50), INT8_C(  43),
                           INT8_C(  82), INT8_C(  -5), INT8_C( -23), INT8_C( -47),
                           INT8_C(  99), INT8_C(-116), INT8_C( 118), INT8_C(  73),
                           INT8_C( -10), INT8_C( -88), INT8_C( -42), INT8_C( -58),
                           INT8_C( -49), INT8_C(  65), INT8_C( -18), INT8_C(  54),
                           INT8_C( -68), INT8_C(   1), INT8_C(  -7), INT8_C( -96),
                           INT8_C(   4), INT8_C( 115), INT8_C(  42), INT8_C(-106),
                           INT8_C(  31), INT8_C(  94), INT8_C( -71), INT8_C( -41),
                           INT8_C(  33), INT8_C(-106), INT8_C( -65), INT8_C(-107),
                           INT8_C(  71), INT8_C( -10), INT8_C( -21), INT8_C(-128),
                           INT8_C( -23), INT8_C(  20), INT8_C(   2), INT8_C(  96),
                           INT8_C(-128), INT8_C( -51), INT8_C( -38), INT8_C(  47),
                           INT8_C( -56), INT8_C( 123), INT8_C( -20), INT8_C( -50),
                           INT8_C(  -2), INT8_C(  40), INT8_C(  24), INT8_C( -98),
                           INT8_C(   4), INT8_C( -62), INT8_C( -44), INT8_C(  49),
                           INT8_C(  83), INT8_C( 115), INT8_C(   5), INT8_C(  57)),
      simde_mm512_set_epi8(INT8_C(  76), INT8_C( -52), INT8_C( -96), INT8_C(  -6),
                           INT8_C(-119), INT8_C( -87), INT8_C( 102), INT8_C(   5),
                           INT8_C(  24), INT8_C( -44), INT8_C( 110), INT8_C(-113),
                           INT8_C(-116), INT8_C(  -3), INT8_C(  62), INT8_C( -87),
                           INT8_C(   7), INT8_C( -54), INT8_C( -57), INT8_C( -66),
                           INT8_C(  42), INT8_C( -82), INT8_C(  46), INT8_C( -16),
                           INT8_C(  91), INT8_C( -73), INT8_C( -20), INT8_C( -77),
                           INT8_C( -11), INT8_C(  25), INT8_C(  12), INT8_C(  76),
                           INT8_C( -58), INT8_C(   3), INT8_C(-125), INT8_C( -36),
                           INT8_C(  18), INT8_C( -40), INT8_C( 111), INT8_C( 107),
                           INT8_C(  88), INT8_C(  48), INT8_C( 113), INT8_C( -90),
                           INT8_C(-117), INT8_C( 116), INT8_C(  46), INT8_C( -70),
                           INT8_C(  51), INT8_C( -55), INT8_C( 127), INT8_C(  82),
                           INT8_C( -88), INT8_C(  60), INT8_C( -59), INT8_C(  80),
                           INT8_C( -51), INT8_C(  11), INT8_C( -44), INT8_C(  33),
                           INT8_C(  29), INT8_C(   8), INT8_C(   5), INT8_C(  70)),
      simde_mm512_set_epi8(INT8_C( -35), INT8_C(  32), INT8_C( -43), INT8_C( 108),
                           INT8_C(  83), INT8_C( -59), INT8_C(  -4), INT8_C( 125),
                           INT8_C( -31), INT8_C( 118), INT8_C( -25), INT8_C( -91),
                           INT8_C(  50), INT8_C( -74), INT8_C(  78), INT8_C(  95),
                           INT8_C( -84), INT8_C( -63), INT8_C(  87), INT8_C(-108),
                           INT8_C(  28), INT8_C( -70), INT8_C(  77), INT8_C(-113),
                           INT8_C( -20), INT8_C(  50), INT8_C(  95), INT8_C(-108),
                           INT8_C( 105), INT8_C( 114), INT8_C(-109), INT8_C(  19),
                           INT8_C( -79), INT8_C(-109), INT8_C(  61), INT8_C( -12),
                           INT8_C( 126), INT8_C(-117), INT8_C( 126), INT8_C(  21),
                           INT8_C(-111), INT8_C(  69), INT8_C( 104), INT8_C( -70),
                           INT8_C( -11), INT8_C(  89), INT8_C( -84), INT8_C( -66),
                           INT8_C(-107), INT8_C( -45), INT8_C( 109), INT8_C( 124),
                           INT8_C(-109), INT8_C( -20), INT8_C(  83), INT8_C( 121),
                           INT8_C(  23), INT8_C( -12), INT8_C(  67), INT8_C(  16),
                           INT8_C( -37), INT8_C(  92), INT8_C( -35), INT8_C( -13)) },
    { simde_mm512_set_epi8(INT8_C(  27), INT8_C(  45), INT8_C(  71), INT8_C( -63),
                           INT8_C(  96), INT8_C(-106), INT8_C( -43), INT8_C(  10),
                           INT8_C( 104), INT8_C( -19), INT8_C(-110), INT8_C( 126),
                           INT8_C( -52), INT8_C( -56), INT8_C( -96), INT8_C( -27),
                           INT8_C(-125), INT8_C(-116), INT8_C(  25), INT8_C(  78),
                           INT8_C( -76), INT8_C( -85), INT8_C( -23), INT8_C( -19),
                           INT8_C(-106), INT8_C( 126), INT8_C(  19), INT8_C( -41),
                           INT8_C(  40), INT8_C(  78), INT8_C( -69), INT8_C(  57),
                           INT8_C(  73), INT8_C( -58), INT8_C(   3), INT8_C(  65),
                           INT8_C( -87), INT8_C( -37), INT8_C(   5), INT8_C(-126),
                           INT8_C(  14), INT8_C( -36), INT8_C( -37), INT8_C(  11),
                           INT8_C(  94), INT8_C(  24), INT8_C(   8), INT8_C( -31),
                           INT8_C( -38), INT8_C(  -1), INT8_C(  48), INT8_C(  32),
                           INT8_C(  88), INT8_C( -18), INT8_C( 123), INT8_C(  27),
                           INT8_C( 111), INT8_C(  27), INT8_C(  -3), INT8_C(  52),
                           INT8_C( -31), INT8_C(   2), INT8_C( -47), INT8_C(  64)),
      UINT64_C(           361367503),
      simde_mm512_set_epi8(INT8_C( -20), INT8_C(-104), INT8_C( -27), INT8_C(  38),
                           INT8_C(  31), INT8_C( -21), INT8_C(  79), INT8_C( -62),
                           INT8_C(  36), INT8_C(  95), INT8_C(  42), INT8_C(-102),
                           INT8_C( -80), INT8_C( -69), INT8_C( 107), INT8_C(-114),
                           INT8_C(  76), INT8_C( 123), INT8_C(-126), INT8_C( 108),
                           INT8_C( -55), INT8_C(  89), INT8_C( -46), INT8_C(  18),
                           INT8_C( 117), INT8_C(  25), INT8_C(-120), INT8_C(  27),
                           INT8_C(  34), INT8_C(  64), INT8_C(  71), INT8_C(  64),
                           INT8_C( -13), INT8_C( -73), INT8_C( 112), INT8_C(  25),
                           INT8_C( -18), INT8_C( -63), INT8_C( 109), INT8_C(   9),
                           INT8_C(  14), INT8_C(-125), INT8_C( -89), INT8_C(  70),
                           INT8_C(  10), INT8_C(  15), INT8_C( 120), INT8_C( -59),
                           INT8_C(  55), INT8_C( 108), INT8_C(  41), INT8_C(  -5),
                           INT8_C( -91), INT8_C(-120), INT8_C( -46), INT8_C( 122),
                           INT8_C( 116), INT8_C(-120), INT8_C( -67), INT8_C( -86),
                           INT8_C(  48), INT8_C(   2), INT8_C(  37), INT8_C( -26)),
      simde_mm512_set_epi8(INT8_C( -70), INT8_C(   3), INT8_C( 118), INT8_C(  37),
                           INT8_C( 104), INT8_C( 111), INT8_C( -17), INT8_C( 110),
                           INT8_C( -58), INT8_C(  58), INT8_C( 102), INT8_C(  64),
                           INT8_C( -67), INT8_C( -76), INT8_C( -30), INT8_C( 108),
                           INT8_C(  79), INT8_C(  46), INT8_C( -40), INT8_C( 101),
                           INT8_C( -13), INT8_C( -25), INT8_C(  60), INT8_C(  25),
                           INT8_C(  32), INT8_C( -21), INT8_C( 114), INT8_C( -21),
                           INT8_C(  71), INT8_C( -85), INT8_C(  34), INT8_C(  82),
                           INT8_C(-114), INT8_C( -30), INT8_C( -58), INT8_C( 116),
                           INT8_C(  58), INT8_C(-105), INT8_C( 117), INT8_C(  11),
                           INT8_C( -91), INT8_C( 118), INT8_C( -50), INT8_C(  -8),
                           INT8_C( -22), INT8_C(  59), INT8_C( -29), INT8_C( -88),
                           INT8_C( -82), INT8_C( -24), INT8_C(  18), INT8_C( 115),
                           INT8_C( -15), INT8_C(  55), INT8_C(  78), INT8_C(  60),
                           INT8_C(  -8), INT8_C( -91), INT8_C( 126), INT8_C(  15),
                           INT8_C(  23), INT8_C(   6), INT8_C( -21), INT8_C( 120)),
      simde_mm512_set_epi8(INT8_C(  27), INT8_C(  45), INT8_C(  71), INT8_C( -63),
                           INT8_C(  96), INT8_C(-106), INT8_C( -43), INT8_C(  10),
                           INT8_C( 104), INT8_C( -19), INT8_C(-110), INT8_C( 126),
                           INT8_C( -52), INT8_C( -56), INT8_C( -96), INT8_C( -27),
                           INT8_C(-125), INT8_C(-116), INT8_C(  25), INT8_C(  78),
                           INT8_C( -76), INT8_C( -85), INT8_C( -23), INT8_C( -19),
                           INT8_C(-106), INT8_C( 126), INT8_C(  19), INT8_C( -41),
                           INT8_C(  40), INT8_C(  78), INT8_C( -69), INT8_C(  57),
                           INT8_C(  73), INT8_C( -58), INT8_C(   3), INT8_C( -91),
                           INT8_C( -87), INT8_C(  42), INT8_C(   5), INT8_C(  -2),
                           INT8_C( 105), INT8_C( -36), INT8_C( -37), INT8_C(  11),
                           INT8_C(  32), INT8_C(  24), INT8_C(-107), INT8_C( -31),
                           INT8_C( -38), INT8_C(  -1), INT8_C(  48), INT8_C(  32),
                           INT8_C(  88), INT8_C(  81), INT8_C(-124), INT8_C(  62),
                           INT8_C( 124), INT8_C( -29), INT8_C(  -3), INT8_C(  52),
                           INT8_C(  25), INT8_C(  -4), INT8_C(  58), INT8_C( 110)) },
    { simde_mm512_set_epi8(INT8_C(   4), INT8_C(  97), INT8_C(  53), INT8_C( -46),
                           INT8_C(  92), INT8_C(-100), INT8_C(  47), INT8_C( 107),
                           INT8_C( -52), INT8_C(  68), INT8_C(  11), INT8_C( -16),
                           INT8_C( -66), INT8_C( -79), INT8_C( -14), INT8_C(  27),
                           INT8_C(  14), INT8_C( 125), INT8_C(  22), INT8_C( -82),
                           INT8_C(  44), INT8_C( -12), INT8_C(  94), INT8_C( -30),
                           INT8_C(  98), INT8_C( 125), INT8_C(-107), INT8_C(  37),
                           INT8_C( -66), INT8_C(  90), INT8_C(  68), INT8_C(  10),
                           INT8_C( -72), INT8_C( -10), INT8_C(-119), INT8_C(  -9),
                           INT8_C(  49), INT8_C(-107), INT8_C(  10), INT8_C(  47),
                           INT8_C(  58), INT8_C(-125), INT8_C(   4), INT8_C(  68),
                           INT8_C( -24), INT8_C( -12), INT8_C(  44), INT8_C(-128),
                           INT8_C( -52), INT8_C( -61), INT8_C( -14), INT8_C( -38),
                           INT8_C( -93), INT8_C( -34), INT8_C(  64), INT8_C( -67),
                           INT8_C(-123), INT8_C( 123), INT8_C( -93), INT8_C(  41),
                           INT8_C(  97), INT8_C(  -8), INT8_C( -86), INT8_C( -16)),
      UINT64_C(           944667126),
      simde_mm512_set_epi8(INT8_C( -24), INT8_C( -47), INT8_C(-119), INT8_C(   5),
                           INT8_C(  95), INT8_C(  82), INT8_C(  -3), INT8_C( -62),
                           INT8_C(-116), INT8_C( -98), INT8_C( -29), INT8_C(  77),
                           INT8_C( -38), INT8_C(-118), INT8_C( -85), INT8_C( 121),
                           INT8_C( -72), INT8_C(-111), INT8_C(  28), INT8_C( -18),
                           INT8_C(  64), INT8_C(-126), INT8_C( 122), INT8_C( -54),
                           INT8_C(  87), INT8_C( -22), INT8_C(  17), INT8_C(  50),
                           INT8_C( -83), INT8_C( -39), INT8_C(  77), INT8_C( -13),
                           INT8_C(  17), INT8_C( -66), INT8_C(-128), INT8_C(  77),
                           INT8_C( 107), INT8_C(  47), INT8_C( -68), INT8_C( -44),
                           INT8_C( -30), INT8_C( -22), INT8_C(  14), INT8_C(  26),
                           INT8_C(  59), INT8_C( 103), INT8_C( -54), INT8_C( -39),
                           INT8_C(  16), INT8_C(   5), INT8_C(  18), INT8_C(-104),
                           INT8_C(-119), INT8_C( -46), INT8_C( -92), INT8_C(  37),
                           INT8_C( -84), INT8_C(   2), INT8_C( -49), INT8_C(  99),
                           INT8_C( -79), INT8_C(  48), INT8_C(-103), INT8_C(   3)),
      simde_mm512_set_epi8(INT8_C( -56), INT8_C( -56), INT8_C(  57), INT8_C( -25),
                           INT8_C(  -3), INT8_C(  99), INT8_C(  -6), INT8_C(  31),
                           INT8_C( -96), INT8_C(  49), INT8_C( 110), INT8_C( -10),
                           INT8_C( -82), INT8_C(  32), INT8_C( -27), INT8_C( 112),
                           INT8_C(  84), INT8_C(  37), INT8_C( -62), INT8_C(  38),
                           INT8_C( -53), INT8_C( -97), INT8_C(  76), INT8_C(  13),
                           INT8_C(-124), INT8_C(-120), INT8_C( -86), INT8_C(  98),
                           INT8_C(  96), INT8_C(   4), INT8_C(   4), INT8_C(  94),
                           INT8_C( -41), INT8_C( -81), INT8_C( -40), INT8_C( -28),
                           INT8_C( -23), INT8_C( -59), INT8_C( -15), INT8_C( -40),
                           INT8_C( 113), INT8_C( 116), INT8_C(  41), INT8_C( -96),
                           INT8_C( -83), INT8_C(   4), INT8_C(  93), INT8_C(  28),
                           INT8_C( 114), INT8_C(  29), INT8_C( -56), INT8_C( -61),
                           INT8_C(-124), INT8_C(-107), INT8_C( -23), INT8_C( -89),
                           INT8_C(  38), INT8_C( -97), INT8_C( 109), INT8_C(  53),
                           INT8_C(-117), INT8_C(  76), INT8_C( -82), INT8_C( -65)),
      simde_mm512_set_epi8(INT8_C(   4), INT8_C(  97), INT8_C(  53), INT8_C( -46),
                           INT8_C(  92), INT8_C(-100), INT8_C(  47), INT8_C( 107),
                           INT8_C( -52), INT8_C(  68), INT8_C(  11), INT8_C( -16),
                           INT8_C( -66), INT8_C( -79), INT8_C( -14), INT8_C(  27),
                           INT8_C(  14), INT8_C( 125), INT8_C(  22), INT8_C( -82),
                           INT8_C(  44), INT8_C( -12), INT8_C(  94), INT8_C( -30),
                           INT8_C(  98), INT8_C( 125), INT8_C(-107), INT8_C(  37),
                           INT8_C( -66), INT8_C(  90), INT8_C(  68), INT8_C(  10),
                           INT8_C( -72), INT8_C( -10), INT8_C( -88), INT8_C( 105),
                           INT8_C(-126), INT8_C(-107), INT8_C(  10), INT8_C(  47),
                           INT8_C(  58), INT8_C( 118), INT8_C(   4), INT8_C(  68),
                           INT8_C(-114), INT8_C(  99), INT8_C( 109), INT8_C(-128),
                           INT8_C( -52), INT8_C( -24), INT8_C(  74), INT8_C( -43),
                           INT8_C(   5), INT8_C( -34), INT8_C(  64), INT8_C( 126),
                           INT8_C(-122), INT8_C(  99), INT8_C(  98), INT8_C(  46),
                           INT8_C(  97), INT8_C( -28), INT8_C( -21), INT8_C( -16)) },
    { simde_mm512_set_epi8(INT8_C( -50), INT8_C(   0), INT8_C(  80), INT8_C(-123),
                           INT8_C(  19), INT8_C( 112), INT8_C(  30), INT8_C(  95),
                           INT8_C(  58), INT8_C(  21), INT8_C(  13), INT8_C(  32),
                           INT8_C( 113), INT8_C( 126), INT8_C(  27), INT8_C( 113),
                           INT8_C( 121), INT8_C(  97), INT8_C(  51), INT8_C( -16),
                           INT8_C( -77), INT8_C(  84), INT8_C(  16), INT8_C(-112),
                           INT8_C( -40), INT8_C( -69), INT8_C(-116), INT8_C( -97),
                           INT8_C(-120), INT8_C( 102), INT8_C( -82), INT8_C( -42),
                           INT8_C(  43), INT8_C( -70), INT8_C(  46), INT8_C(  17),
                           INT8_C( 108), INT8_C( -47), INT8_C(  53), INT8_C( -84),
                           INT8_C(  19), INT8_C( -37), INT8_C( -32), INT8_C( -59),
                           INT8_C(  33), INT8_C( 110), INT8_C(  17), INT8_C(  67),
                           INT8_C(  51), INT8_C( -19), INT8_C(  91), INT8_C(  26),
                           INT8_C(  33), INT8_C( -43), INT8_C( -14), INT8_C( -56),
                           INT8_C( 112), INT8_C( -72), INT8_C(  96), INT8_C( -62),
                           INT8_C( -21), INT8_C(  96), INT8_C( -25), INT8_C( 104)),
      UINT64_C(          1662672283),
      simde_mm512_set_epi8(INT8_C(  55), INT8_C(  43), INT8_C(-128), INT8_C(  23),
                           INT8_C( -59), INT8_C( -21), INT8_C( -11), INT8_C( -65),
                           INT8_C(-101), INT8_C( -89), INT8_C( -88), INT8_C( -71),
                           INT8_C( -70), INT8_C(  37), INT8_C( 122), INT8_C(  74),
                           INT8_C( 109), INT8_C( -13), INT8_C( -13), INT8_C(  72),
                           INT8_C(  -1), INT8_C( -35), INT8_C(  80), INT8_C( -20),
                           INT8_C(  14), INT8_C(-104), INT8_C( -76), INT8_C(-122),
                           INT8_C( -35), INT8_C( -33), INT8_C(  63), INT8_C(  74),
                           INT8_C(  98), INT8_C(  54), INT8_C( -12), INT8_C(  -1),
                           INT8_C( -30), INT8_C(  96), INT8_C(  95), INT8_C(  58),
                           INT8_C( -63), INT8_C(  -6), INT8_C(-113), INT8_C(  55),
                           INT8_C(-128), INT8_C( -43), INT8_C( -90), INT8_C( -63),
                           INT8_C(   3), INT8_C(  -6), INT8_C( -45), INT8_C( -75),
                           INT8_C( -83), INT8_C(-118), INT8_C(  74), INT8_C(  35),
                           INT8_C(  38), INT8_C(   4), INT8_C(  35), INT8_C(  15),
                           INT8_C( -42), INT8_C(  71), INT8_C(  -1), INT8_C(  27)),
      simde_mm512_set_epi8(INT8_C(  32), INT8_C( 122), INT8_C(  89), INT8_C(  21),
                           INT8_C( -83), INT8_C( -46), INT8_C( -78), INT8_C(  71),
                           INT8_C( -35), INT8_C(  54), INT8_C( -65), INT8_C(-111),
                           INT8_C(  45), INT8_C(  -5), INT8_C( 102), INT8_C(  32),
                           INT8_C(-110), INT8_C( 116), INT8_C( -61), INT8_C(  36),
                           INT8_C( -25), INT8_C( 106), INT8_C( -63), INT8_C(  23),
                           INT8_C( -59), INT8_C(  25), INT8_C(-108), INT8_C( -84),
                           INT8_C( -23), INT8_C( 118), INT8_C( -35), INT8_C(  92),
                           INT8_C( -29), INT8_C(-121), INT8_C( -87), INT8_C(  93),
                           INT8_C(   6), INT8_C( -12), INT8_C(-123), INT8_C(  42),
                           INT8_C( 121), INT8_C(   3), INT8_C(  69), INT8_C(  75),
                           INT8_C(  68), INT8_C(  -1), INT8_C( -25), INT8_C(  83),
                           INT8_C(  -4), INT8_C( -73), INT8_C( -63), INT8_C(  12),
                           INT8_C( -93), INT8_C( -22), INT8_C(  40), INT8_C( -24),
                           INT8_C( -60), INT8_C(  99), INT8_C( 122), INT8_C(  49),
                           INT8_C( -46), INT8_C( 127), INT8_C(  18), INT8_C( 124)),
      simde_mm512_set_epi8(INT8_C( -50), INT8_C(   0), INT8_C(  80), INT8_C(-123),
                           INT8_C(  19), INT8_C( 112), INT8_C(  30), INT8_C(  95),
                           INT8_C(  58), INT8_C(  21), INT8_C(  13), INT8_C(  32),
                           INT8_C( 113), INT8_C( 126), INT8_C(  27), INT8_C( 113),
                           INT8_C( 121), INT8_C(  97), INT8_C(  51), INT8_C( -16),
                           INT8_C( -77), INT8_C(  84), INT8_C(  16), INT8_C(-112),
                           INT8_C( -40), INT8_C( -69), INT8_C(-116), INT8_C( -97),
                           INT8_C(-120), INT8_C( 102), INT8_C( -82), INT8_C( -42),
                           INT8_C(  43), INT8_C( -81), INT8_C(  75), INT8_C(  17),
                           INT8_C( 108), INT8_C( -47), INT8_C( -38), INT8_C(  16),
                           INT8_C(  19), INT8_C( -37), INT8_C( -32), INT8_C( -20),
                           INT8_C(  60), INT8_C( 110), INT8_C( -65), INT8_C(  67),
                           INT8_C(  51), INT8_C(  67), INT8_C(  91), INT8_C( -87),
                           INT8_C(  10), INT8_C( -96), INT8_C( -14), INT8_C(  59),
                           INT8_C(  98), INT8_C( -72), INT8_C(  96), INT8_C( -34),
                           INT8_C(   4), INT8_C(  96), INT8_C( -19), INT8_C( -97)) },
    { simde_mm512_set_epi8(INT8_C( -82), INT8_C(  17), INT8_C( 105), INT8_C(   8),
                           INT8_C( -41), INT8_C( 122), INT8_C( -11), INT8_C( -52),
                           INT8_C( -81), INT8_C( -30), INT8_C( 109), INT8_C( 119),
                           INT8_C( -78), INT8_C(-123), INT8_C(   5), INT8_C( -23),
                           INT8_C(  44), INT8_C( -23), INT8_C(-122), INT8_C(-101),
                           INT8_C( -30), INT8_C( 103), INT8_C(  30), INT8_C(  -6),
                           INT8_C( 113), INT8_C( -64), INT8_C(  -3), INT8_C(-100),
                           INT8_C(  72), INT8_C( -30), INT8_C(  59), INT8_C(  -7),
                           INT8_C(-101), INT8_C(  48), INT8_C( -62), INT8_C(   5),
                           INT8_C( -52), INT8_C(  72), INT8_C(  56), INT8_C(   6),
                           INT8_C(  86), INT8_C( -78), INT8_C( -43), INT8_C(  91),
                           INT8_C( -63), INT8_C( -91), INT8_C(-105), INT8_C( -98),
                           INT8_C(  39), INT8_C(   5), INT8_C(  77), INT8_C(  91),
                           INT8_C( -82), INT8_C(  20), INT8_C(  41), INT8_C(  62),
                           INT8_C(  27), INT8_C(  82), INT8_C( -39), INT8_C(  57),
                           INT8_C(-116), INT8_C( -85), INT8_C(-107), INT8_C(  31)),
      UINT64_C(           782232724),
      simde_mm512_set_epi8(INT8_C(  11), INT8_C(  49), INT8_C( -30), INT8_C(-117),
                           INT8_C(  85), INT8_C(  19), INT8_C(  44), INT8_C(-110),
                           INT8_C(  61), INT8_C( -27), INT8_C(  26), INT8_C( -12),
                           INT8_C( 110), INT8_C(  11), INT8_C(  45), INT8_C( -32),
                           INT8_C(  -1), INT8_C(  86), INT8_C( 125), INT8_C(  95),
                           INT8_C( -41), INT8_C( -73), INT8_C(  -6), INT8_C( 122),
                           INT8_C(  65), INT8_C( -38), INT8_C(-116), INT8_C(  84),
                           INT8_C(-121), INT8_C( -15), INT8_C(  41), INT8_C(-102),
                           INT8_C( -31), INT8_C( -83), INT8_C( -68), INT8_C(  89),
                           INT8_C(  27), INT8_C(-107), INT8_C( -85), INT8_C(  74),
                           INT8_C(  95), INT8_C( -86), INT8_C(  94), INT8_C( -13),
                           INT8_C( -84), INT8_C(  38), INT8_C( 116), INT8_C(-101),
                           INT8_C(  72), INT8_C(  32), INT8_C( -98), INT8_C(  48),
                           INT8_C( -94), INT8_C( -55), INT8_C( -17), INT8_C(  28),
                           INT8_C(  42), INT8_C(  70), INT8_C(  89), INT8_C(-115),
                           INT8_C( -86), INT8_C( 126), INT8_C( -92), INT8_C(  91)),
      simde_mm512_set_epi8(INT8_C( -46), INT8_C( -24), INT8_C( -24), INT8_C( -26),
                           INT8_C(  89), INT8_C( 108), INT8_C(  49), INT8_C( 123),
                           INT8_C( -86), INT8_C( -61), INT8_C( -22), INT8_C( -47),
                           INT8_C(  21), INT8_C(  76), INT8_C(   6), INT8_C( -21),
                           INT8_C( -19), INT8_C(  38), INT8_C(-116), INT8_C( -22),
                           INT8_C( -75), INT8_C(  54), INT8_C( -81), INT8_C(   9),
                           INT8_C(  94), INT8_C( -15), INT8_C(  26), INT8_C(-110),
                           INT8_C(  18), INT8_C( -49), INT8_C( -21), INT8_C(  70),
                           INT8_C(  50), INT8_C(  20), INT8_C( -59), INT8_C(  63),
                           INT8_C( -20), INT8_C( -92), INT8_C( -44), INT8_C(  37),
                           INT8_C(-125), INT8_C(   4), INT8_C(  53), INT8_C( -49),
                           INT8_C( -10), INT8_C(  11), INT8_C(  91), INT8_C( -86),
                           INT8_C( -34), INT8_C(-108), INT8_C( -80), INT8_C( 122),
                           INT8_C(  31), INT8_C(  31), INT8_C( -29), INT8_C(  70),
                           INT8_C(  28), INT8_C(  33), INT8_C( 109), INT8_C(  55),
                           INT8_C( -79), INT8_C(  95), INT8_C( 100), INT8_C( -33)),
      simde_mm512_set_epi8(INT8_C( -82), INT8_C(  17), INT8_C( 105), INT8_C(   8),
                           INT8_C( -41), INT8_C( 122), INT8_C( -11), INT8_C( -52),
                           INT8_C( -81), INT8_C( -30), INT8_C( 109), INT8_C( 119),
                           INT8_C( -78), INT8_C(-123), INT8_C(   5), INT8_C( -23),
                           INT8_C(  44), INT8_C( -23), INT8_C(-122), INT8_C(-101),
                           INT8_C( -30), INT8_C( 103), INT8_C(  30), INT8_C(  -6),
                           INT8_C( 113), INT8_C( -64), INT8_C(  -3), INT8_C(-100),
                           INT8_C(  72), INT8_C( -30), INT8_C(  59), INT8_C(  -7),
                           INT8_C(-101), INT8_C(  48), INT8_C(  -9), INT8_C(   5),
                           INT8_C(  47), INT8_C( -15), INT8_C( -41), INT8_C(   6),
                           INT8_C( -36), INT8_C( -78), INT8_C( -43), INT8_C(  36),
                           INT8_C( -74), INT8_C(  27), INT8_C(  25), INT8_C( -15),
                           INT8_C( 106), INT8_C(-116), INT8_C( -18), INT8_C(  91),
                           INT8_C(-125), INT8_C( -86), INT8_C(  41), INT8_C(  62),
                           INT8_C(  14), INT8_C(  82), INT8_C( -39), INT8_C(  86),
                           INT8_C(-116), INT8_C(  31), INT8_C(-107), INT8_C(  31)) },
    { simde_mm512_set_epi8(INT8_C(  82), INT8_C( -55), INT8_C(  13), INT8_C(-104),
                           INT8_C(  62), INT8_C(  20), INT8_C( -36), INT8_C(  92),
                           INT8_C( -73), INT8_C( -79), INT8_C(  -7), INT8_C( -22),
                           INT8_C( -50), INT8_C(-119), INT8_C( -83), INT8_C( -71),
                           INT8_C( 125), INT8_C(  29), INT8_C( -61), INT8_C(-111),
                           INT8_C(  -9), INT8_C(  67), INT8_C( -39), INT8_C( -17),
                           INT8_C(  23), INT8_C( -11), INT8_C(-122), INT8_C( -24),
                           INT8_C(  37), INT8_C(-122), INT8_C( -16), INT8_C( -40),
                           INT8_C( -34), INT8_C( -17), INT8_C( 100), INT8_C( 120),
                           INT8_C( -51), INT8_C(   8), INT8_C(  82), INT8_C(  19),
                           INT8_C( -50), INT8_C( -24), INT8_C( -20), INT8_C( -32),
                           INT8_C(  74), INT8_C( -84), INT8_C(   9), INT8_C(  14),
                           INT8_C(-102), INT8_C(  -2), INT8_C( 106), INT8_C(  41),
                           INT8_C(  98), INT8_C( -87), INT8_C(-124), INT8_C(  -3),
                           INT8_C(  80), INT8_C( 110), INT8_C( -32), INT8_C(  20),
                           INT8_C( -15), INT8_C(  65), INT8_C( -54), INT8_C( -49)),
      UINT64_C(          1883474426),
      simde_mm512_set_epi8(INT8_C( -36), INT8_C(-125), INT8_C( -71), INT8_C(-101),
                           INT8_C( -95), INT8_C(  -1), INT8_C(  65), INT8_C(  67),
                           INT8_C(   4), INT8_C( 126), INT8_C(  -9), INT8_C(  50),
                           INT8_C(  46), INT8_C(  17), INT8_C(  12), INT8_C(   7),
                           INT8_C(  31), INT8_C( -83), INT8_C(  63), INT8_C(  21),
                           INT8_C(-105), INT8_C(  56), INT8_C(   6), INT8_C(  88),
                           INT8_C(  -4), INT8_C( -51), INT8_C( -16), INT8_C( -27),
                           INT8_C( -26), INT8_C(  50), INT8_C(   3), INT8_C( -65),
                           INT8_C(  -3), INT8_C( -86), INT8_C(  39), INT8_C(  48),
                           INT8_C(  65), INT8_C(  36), INT8_C( -65), INT8_C( -82),
                           INT8_C(-107), INT8_C(  14), INT8_C( 110), INT8_C(  56),
                           INT8_C( 111), INT8_C( -32), INT8_C( 109), INT8_C( -95),
                           INT8_C(  69), INT8_C(-111), INT8_C(  -7), INT8_C(   9),
                           INT8_C( 116), INT8_C(  77), INT8_C( 122), INT8_C(  26),
                           INT8_C(   9), INT8_C( -79), INT8_C(-127), INT8_C(  -5),
                           INT8_C( 117), INT8_C(   5), INT8_C(  80), INT8_C( -85)),
      simde_mm512_set_epi8(INT8_C(  82), INT8_C(-125), INT8_C( -33), INT8_C(  83),
                           INT8_C( -98), INT8_C(  50), INT8_C( -27), INT8_C( -16),
                           INT8_C( -63), INT8_C(-111), INT8_C( -65), INT8_C(   3),
                           INT8_C( -15), INT8_C(  37), INT8_C(  46), INT8_C(  58),
                           INT8_C( -41), INT8_C(  72), INT8_C( 108), INT8_C(-124),
                           INT8_C(   9), INT8_C(  40), INT8_C( 115), INT8_C(  12),
                           INT8_C(   1), INT8_C(  41), INT8_C( -71), INT8_C(  87),
                           INT8_C( -55), INT8_C(  52), INT8_C( -97), INT8_C(  49),
                           INT8_C(  32), INT8_C(-115), INT8_C(  71), INT8_C(  64),
                           INT8_C( -61), INT8_C(  43), INT8_C( -42), INT8_C(  57),
                           INT8_C( -56), INT8_C( 113), INT8_C(  60), INT8_C(  75),
                           INT8_C(   7), INT8_C( -47), INT8_C(   4), INT8_C( 115),
                           INT8_C(  67), INT8_C(  44), INT8_C(  -1), INT8_C( -85),
                           INT8_C( -95), INT8_C( 108), INT8_C(  37), INT8_C( -99),
                           INT8_C( -88), INT8_C( -11), INT8_C(  47), INT8_C( -69),
                           INT8_C(-123), INT8_C(  17), INT8_C( -30), INT8_C(  36)),
      simde_mm512_set_epi8(INT8_C(  82), INT8_C( -55), INT8_C(  13), INT8_C(-104),
                           INT8_C(  62), INT8_C(  20), INT8_C( -36), INT8_C(  92),
                           INT8_C( -73), INT8_C( -79), INT8_C(  -7), INT8_C( -22),
                           INT8_C( -50), INT8_C(-119), INT8_C( -83), INT8_C( -71),
                           INT8_C( 125), INT8_C(  29), INT8_C( -61), INT8_C(-111),
                           INT8_C(  -9), INT8_C(  67), INT8_C( -39), INT8_C( -17),
                           INT8_C(  23), INT8_C( -11), INT8_C(-122), INT8_C( -24),
                           INT8_C(  37), INT8_C(-122), INT8_C( -16), INT8_C( -40),
                           INT8_C( -34), INT8_C(  29), INT8_C( -32), INT8_C( -16),
                           INT8_C( -51), INT8_C(   8), INT8_C(  82), INT8_C(  19),
                           INT8_C( -50), INT8_C( -99), INT8_C( -20), INT8_C( -32),
                           INT8_C(  74), INT8_C( -84), INT8_C( 105), INT8_C(  46),
                           INT8_C(   2), INT8_C(  -2), INT8_C( 106), INT8_C(  41),
                           INT8_C( -45), INT8_C( -87), INT8_C(-124), INT8_C( 125),
                           INT8_C(  97), INT8_C( -68), INT8_C(  82), INT8_C(  64),
                           INT8_C( -16), INT8_C(  65), INT8_C( 110), INT8_C( -49)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m512i r = simde_mm512_mask_sub_epi8(test_vec[i].src, test_vec[i].k, test_vec[i].a, test_vec[i].b);
    simde_assert_m512i_i8(r, ==, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm512_maskz_sub_epi8(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__mmask64 k;
    simde__m512i a;
    simde__m512i b;
    simde__m512i r;
  } test_vec[8] = {
    { UINT64_C(          3290745653),
      simde_mm512_set_epi8(INT8_C(  68), INT8_C( -18), INT8_C(-120), INT8_C( -91),
                           INT8_C(  33), INT8_C( -44), INT8_C( 127), INT8_C(-128),
                           INT8_C( 121), INT8_C(  -8), INT8_C(-121), INT8_C( -19),
                           INT8_C(  19), INT8_C(  -3), INT8_C(  10), INT8_C( -37),
                           INT8_C(  96), INT8_C(  15), INT8_C( -45), INT8_C( -44),
                           INT8_C( -83), INT8_C( -37), INT8_C(   8), INT8_C( 111),
                           INT8_C( -30), INT8_C( -99), INT8_C( 116), INT8_C( 112),
                           INT8_C(  67), INT8_C(-123), INT8_C(  59), INT8_C( -62),
                           INT8_C(  33), INT8_C(  51), INT8_C( -16), INT8_C( -35),
                           INT8_C( -53), INT8_C( 108), INT8_C( -37), INT8_C( -15),
                           INT8_C(  26), INT8_C(  83), INT8_C( -47), INT8_C( -23),
                           INT8_C(   6), INT8_C(  52), INT8_C( -19), INT8_C( 108),
                           INT8_C( -33), INT8_C( 120), INT8_C(  55), INT8_C(-128),
                           INT8_C( -46), INT8_C( 117), INT8_C(  41), INT8_C( -54),
                           INT8_C( -99), INT8_C( -39), INT8_C( 117), INT8_C(  57),
                           INT8_C(  78), INT8_C(-110), INT8_C(  -8), INT8_C(-114)),
      simde_mm512_set_epi8(INT8_C( 115), INT8_C(  65), INT8_C(-123), INT8_C( 116),
                           INT8_C( -46), INT8_C( -68), INT8_C(  -8), INT8_C(  96),
                           INT8_C( -90), INT8_C( -14), INT8_C(  27), INT8_C(  33),
                           INT8_C(  21), INT8_C(  58), INT8_C( -12), INT8_C( -76),
                           INT8_C(  70), INT8_C( -70), INT8_C(  -4), INT8_C(  64),
                           INT8_C(  35), INT8_C( -32), INT8_C(-115), INT8_C( 109),
                           INT8_C( -69), INT8_C( -61), INT8_C(-126), INT8_C(  45),
                           INT8_C(  93), INT8_C( 100), INT8_C( -53), INT8_C( 105),
                           INT8_C( -51), INT8_C(  43), INT8_C( -96), INT8_C( -95),
                           INT8_C(  86), INT8_C( -66), INT8_C( -47), INT8_C( 123),
                           INT8_C(  63), INT8_C(  16), INT8_C( -66), INT8_C(  12),
                           INT8_C( 115), INT8_C( -39), INT8_C(  10), INT8_C( 108),
                           INT8_C(-120), INT8_C( 110), INT8_C( -25), INT8_C(   7),
                           INT8_C( 105), INT8_C( -93), INT8_C(  68), INT8_C(   3),
                           INT8_C( 113), INT8_C( -50), INT8_C( -34), INT8_C(  22),
                           INT8_C( -61), INT8_C(  75), INT8_C(  28), INT8_C( 116)),
      simde_mm512_set_epi8(INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(  84), INT8_C(   8), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C( -82), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(  19), INT8_C(   0),
                           INT8_C(   0), INT8_C(  91), INT8_C(   0), INT8_C(   0),
                           INT8_C(  87), INT8_C(  10), INT8_C(   0), INT8_C(   0),
                           INT8_C( 105), INT8_C(   0), INT8_C( -27), INT8_C( -57),
                           INT8_C(   0), INT8_C(   0), INT8_C(-105), INT8_C(  35),
                           INT8_C(   0), INT8_C(  71), INT8_C(   0), INT8_C(  26)) },
    { UINT64_C(          1235205951),
      simde_mm512_set_epi8(INT8_C(-120), INT8_C( -25), INT8_C( 111), INT8_C(-128),
                           INT8_C(  -4), INT8_C(  58), INT8_C(-115), INT8_C(   4),
                           INT8_C(  26), INT8_C(  -6), INT8_C( -92), INT8_C(   7),
                           INT8_C(-105), INT8_C( -92), INT8_C(  38), INT8_C( -63),
                           INT8_C(  77), INT8_C(  86), INT8_C( 113), INT8_C( -48),
                           INT8_C( 108), INT8_C( -92), INT8_C(  69), INT8_C(  74),
                           INT8_C(  67), INT8_C(  96), INT8_C( -34), INT8_C(  78),
                           INT8_C( 124), INT8_C(   9), INT8_C(  -1), INT8_C( -86),
                           INT8_C( -35), INT8_C(  26), INT8_C(  67), INT8_C(  46),
                           INT8_C(  75), INT8_C(-119), INT8_C(  68), INT8_C(  31),
                           INT8_C( -52), INT8_C(-102), INT8_C(  -4), INT8_C( 118),
                           INT8_C(   0), INT8_C( -44), INT8_C( 123), INT8_C( -73),
                           INT8_C(  84), INT8_C(  30), INT8_C(  -8), INT8_C(  64),
                           INT8_C( -20), INT8_C( -79), INT8_C( -85), INT8_C( -23),
                           INT8_C( -34), INT8_C(  -4), INT8_C( -85), INT8_C( 107),
                           INT8_C(  -6), INT8_C(  16), INT8_C( -66), INT8_C(-113)),
      simde_mm512_set_epi8(INT8_C( -19), INT8_C( 117), INT8_C( 121), INT8_C(  67),
                           INT8_C( -91), INT8_C( -91), INT8_C(  98), INT8_C( 106),
                           INT8_C(  44), INT8_C(  68), INT8_C(  96), INT8_C(  88),
                           INT8_C(   1), INT8_C(  68), INT8_C(  46), INT8_C(  19),
                           INT8_C(  31), INT8_C(  85), INT8_C(  35), INT8_C(  68),
                           INT8_C( -79), INT8_C(  41), INT8_C(  28), INT8_C(  92),
                           INT8_C( -26), INT8_C(  20), INT8_C( -16), INT8_C(  -7),
                           INT8_C(  41), INT8_C(  71), INT8_C(  88), INT8_C(  39),
                           INT8_C( -42), INT8_C(  76), INT8_C(  40), INT8_C( 108),
                           INT8_C( -87), INT8_C(-126), INT8_C(  42), INT8_C(  58),
                           INT8_C(   2), INT8_C( -23), INT8_C(   5), INT8_C(-116),
                           INT8_C(  34), INT8_C(  66), INT8_C(  28), INT8_C(  86),
                           INT8_C(  50), INT8_C( -67), INT8_C(  20), INT8_C(  73),
                           INT8_C(  27), INT8_C( -29), INT8_C(  84), INT8_C( 112),
                           INT8_C( 104), INT8_C(  53), INT8_C( -89), INT8_C(-113),
                           INT8_C(  -4), INT8_C(  94), INT8_C(  75), INT8_C(  21)),
      simde_mm512_set_epi8(INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C( -50), INT8_C(   0), INT8_C(   0),
                           INT8_C( -94), INT8_C(   0), INT8_C(   0), INT8_C( -27),
                           INT8_C( -54), INT8_C(   0), INT8_C(   0), INT8_C( -22),
                           INT8_C( -34), INT8_C(-110), INT8_C(  95), INT8_C(  97),
                           INT8_C(  34), INT8_C(   0), INT8_C( -28), INT8_C(  -9),
                           INT8_C( -47), INT8_C( -50), INT8_C(  87), INT8_C( 121),
                           INT8_C(   0), INT8_C(   0), INT8_C(   4), INT8_C( -36),
                           INT8_C(  -2), INT8_C( -78), INT8_C( 115), INT8_C( 122)) },
    { UINT64_C(          3694669449),
      simde_mm512_set_epi8(INT8_C(   0), INT8_C( -45), INT8_C(  59), INT8_C(  51),
                           INT8_C( -35), INT8_C(  70), INT8_C(  73), INT8_C(  33),
                           INT8_C( -70), INT8_C( -58), INT8_C(  69), INT8_C(  -7),
                           INT8_C( 115), INT8_C( -10), INT8_C( -39), INT8_C(  78),
                           INT8_C(  56), INT8_C( 116), INT8_C( 104), INT8_C( -92),
                           INT8_C(   5), INT8_C( -47), INT8_C(  27), INT8_C(  94),
                           INT8_C(-126), INT8_C(  88), INT8_C(  80), INT8_C( 112),
                           INT8_C(  21), INT8_C(  62), INT8_C(  86), INT8_C(-103),
                           INT8_C(  66), INT8_C(  -9), INT8_C( -26), INT8_C(  47),
                           INT8_C( -50), INT8_C(-118), INT8_C( 115), INT8_C(  49),
                           INT8_C(  42), INT8_C(   6), INT8_C(  92), INT8_C(   2),
                           INT8_C(  63), INT8_C(  -6), INT8_C( -32), INT8_C(  15),
                           INT8_C(  66), INT8_C(  82), INT8_C(  -9), INT8_C( -79),
                           INT8_C(-123), INT8_C(  52), INT8_C( -90), INT8_C(-111),
                           INT8_C(  62), INT8_C( -43), INT8_C( -50), INT8_C(  62),
                           INT8_C(   4), INT8_C( -92), INT8_C(  86), INT8_C( -32)),
      simde_mm512_set_epi8(INT8_C(  23), INT8_C( -12), INT8_C(  67), INT8_C(  -6),
                           INT8_C( -37), INT8_C(  92), INT8_C( -35), INT8_C(  99),
                           INT8_C(  18), INT8_C(  68), INT8_C(  -9), INT8_C(  64),
                           INT8_C(-111), INT8_C(  37), INT8_C( -82), INT8_C( -95),
                           INT8_C(  54), INT8_C(  75), INT8_C( -77), INT8_C( -34),
                           INT8_C(  52), INT8_C( -80), INT8_C( -94), INT8_C(  90),
                           INT8_C(   0), INT8_C(  -8), INT8_C( 123), INT8_C(-111),
                           INT8_C(  16), INT8_C( 125), INT8_C( -51), INT8_C(  99),
                           INT8_C( -22), INT8_C( 121), INT8_C(  63), INT8_C( -55),
                           INT8_C( 117), INT8_C( 109), INT8_C(-126), INT8_C(-111),
                           INT8_C(  47), INT8_C(-127), INT8_C( 109), INT8_C(  -9),
                           INT8_C( -42), INT8_C(  36), INT8_C( -32), INT8_C( 115),
                           INT8_C( -89), INT8_C(   7), INT8_C(  90), INT8_C(  46),
                           INT8_C( -83), INT8_C( -35), INT8_C(  30), INT8_C( -19),
                           INT8_C( -99), INT8_C( -56), INT8_C( -70), INT8_C(  73),
                           INT8_C( -61), INT8_C(  27), INT8_C( 117), INT8_C(  47)),
      simde_mm512_set_epi8(INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(  88), INT8_C( 126), INT8_C(   0), INT8_C( 102),
                           INT8_C(  89), INT8_C(  29), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C( -17), INT8_C(  11),
                           INT8_C( 105), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C( -99), INT8_C(   0),
                           INT8_C( -40), INT8_C(  87), INT8_C(-120), INT8_C(   0),
                           INT8_C( -95), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(  65), INT8_C(   0), INT8_C(   0), INT8_C( -79)) },
    { UINT64_C(          2480122489),
      simde_mm512_set_epi8(INT8_C(   4), INT8_C( -62), INT8_C( -44), INT8_C(  49),
                           INT8_C(  83), INT8_C( 115), INT8_C(   5), INT8_C(  57),
                           INT8_C( -76), INT8_C( -80), INT8_C(  40), INT8_C(  60),
                           INT8_C(  65), INT8_C( -98), INT8_C( -74), INT8_C(  17),
                           INT8_C( -35), INT8_C(  32), INT8_C( -43), INT8_C( 108),
                           INT8_C(  83), INT8_C( -59), INT8_C(  -4), INT8_C( 125),
                           INT8_C( -31), INT8_C( 118), INT8_C( -25), INT8_C( -91),
                           INT8_C(  50), INT8_C( -74), INT8_C(  78), INT8_C(  95),
                           INT8_C( -84), INT8_C( -63), INT8_C(  87), INT8_C(-108),
                           INT8_C(  28), INT8_C( -70), INT8_C(  77), INT8_C(-113),
                           INT8_C( -20), INT8_C(  50), INT8_C(  95), INT8_C(-108),
                           INT8_C( 105), INT8_C( 114), INT8_C(-109), INT8_C(  19),
                           INT8_C( -79), INT8_C( 106), INT8_C(  61), INT8_C( -12),
                           INT8_C( 126), INT8_C(-117), INT8_C( 126), INT8_C(-125),
                           INT8_C( -93), INT8_C(  69), INT8_C( 104), INT8_C( 119),
                           INT8_C(  63), INT8_C(  95), INT8_C(-106), INT8_C( -66)),
      simde_mm512_set_epi8(INT8_C( -51), INT8_C(  11), INT8_C( -44), INT8_C(  33),
                           INT8_C(  29), INT8_C(   8), INT8_C(   5), INT8_C(  70),
                           INT8_C(  13), INT8_C( 104), INT8_C(  50), INT8_C(  43),
                           INT8_C(  82), INT8_C(  -5), INT8_C( -23), INT8_C( -47),
                           INT8_C(  99), INT8_C(-116), INT8_C( 118), INT8_C(  73),
                           INT8_C( -10), INT8_C( -88), INT8_C( -42), INT8_C( -58),
                           INT8_C( -49), INT8_C(  65), INT8_C( -18), INT8_C(  54),
                           INT8_C( -68), INT8_C(   1), INT8_C(  -7), INT8_C( -96),
                           INT8_C(   4), INT8_C( 115), INT8_C(  42), INT8_C(-106),
                           INT8_C(  31), INT8_C(  94), INT8_C( -71), INT8_C( -41),
                           INT8_C(  33), INT8_C(-106), INT8_C( -65), INT8_C(-107),
                           INT8_C(  71), INT8_C( -10), INT8_C( -21), INT8_C(-128),
                           INT8_C( -23), INT8_C(  20), INT8_C(   2), INT8_C(  96),
                           INT8_C(-128), INT8_C( -51), INT8_C( -38), INT8_C(  47),
                           INT8_C( -56), INT8_C( 123), INT8_C( -20), INT8_C( -50),
                           INT8_C(  -2), INT8_C(  40), INT8_C(  24), INT8_C( -98)),
      simde_mm512_set_epi8(INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C( -88), INT8_C(   0), INT8_C(   0), INT8_C(  -2),
                           INT8_C(   0), INT8_C(   0), INT8_C(-108), INT8_C( -72),
                           INT8_C( -53), INT8_C(-100), INT8_C(   0), INT8_C(  -1),
                           INT8_C(   0), INT8_C(   0), INT8_C( -88), INT8_C(-109),
                           INT8_C( -56), INT8_C(   0), INT8_C(  59), INT8_C(   0),
                           INT8_C(  -2), INT8_C(   0), INT8_C( -92), INT8_C(   0),
                           INT8_C(   0), INT8_C( -54), INT8_C( 124), INT8_C( -87),
                           INT8_C(  65), INT8_C(   0), INT8_C(   0), INT8_C(  32)) },
    { UINT64_C(          2822554960),
      simde_mm512_set_epi8(INT8_C( -38), INT8_C(  -1), INT8_C(  48), INT8_C(  32),
                           INT8_C(  88), INT8_C( -18), INT8_C( 123), INT8_C(  27),
                           INT8_C( 111), INT8_C(  27), INT8_C(  -3), INT8_C(  52),
                           INT8_C( -31), INT8_C(   2), INT8_C( -47), INT8_C(  64),
                           INT8_C(  76), INT8_C( -52), INT8_C( -96), INT8_C(  -6),
                           INT8_C(-119), INT8_C( -87), INT8_C( 102), INT8_C(   5),
                           INT8_C(  24), INT8_C( -44), INT8_C( 110), INT8_C(-113),
                           INT8_C(-116), INT8_C(  -3), INT8_C(  62), INT8_C( -87),
                           INT8_C(   7), INT8_C( -54), INT8_C( -57), INT8_C( -66),
                           INT8_C(  42), INT8_C( -82), INT8_C(  46), INT8_C( -16),
                           INT8_C(  91), INT8_C( -73), INT8_C( -20), INT8_C( -77),
                           INT8_C( -11), INT8_C(  25), INT8_C(  12), INT8_C(  76),
                           INT8_C( -58), INT8_C(   3), INT8_C(-125), INT8_C( -36),
                           INT8_C(  18), INT8_C( -40), INT8_C( 111), INT8_C( 107),
                           INT8_C(  88), INT8_C(  48), INT8_C( 113), INT8_C( -90),
                           INT8_C(-117), INT8_C( 116), INT8_C(  46), INT8_C( -70)),
      simde_mm512_set_epi8(INT8_C( 116), INT8_C(-120), INT8_C( -67), INT8_C( -86),
                           INT8_C(  48), INT8_C(   2), INT8_C(  37), INT8_C( -26),
                           INT8_C( -55), INT8_C(  66), INT8_C(  80), INT8_C(  -7),
                           INT8_C(  21), INT8_C(-118), INT8_C(   7), INT8_C( -49),
                           INT8_C(  27), INT8_C(  45), INT8_C(  71), INT8_C( -63),
                           INT8_C(  96), INT8_C(-106), INT8_C( -43), INT8_C(  10),
                           INT8_C( 104), INT8_C( -19), INT8_C(-110), INT8_C( 126),
                           INT8_C( -52), INT8_C( -56), INT8_C( -96), INT8_C( -27),
                           INT8_C(-125), INT8_C(-116), INT8_C(  25), INT8_C(  78),
                           INT8_C( -76), INT8_C( -85), INT8_C( -23), INT8_C( -19),
                           INT8_C(-106), INT8_C( 126), INT8_C(  19), INT8_C( -41),
                           INT8_C(  40), INT8_C(  78), INT8_C( -69), INT8_C(  57),
                           INT8_C(  73), INT8_C( -58), INT8_C(   3), INT8_C(  65),
                           INT8_C( -87), INT8_C( -37), INT8_C(   5), INT8_C(-126),
                           INT8_C(  14), INT8_C( -36), INT8_C( -37), INT8_C(  11),
                           INT8_C(  94), INT8_C(  24), INT8_C(   8), INT8_C( -31)),
      simde_mm512_set_epi8(INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(-124), INT8_C(   0), INT8_C( -82), INT8_C(   0),
                           INT8_C( 118), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C( -39), INT8_C( -36),
                           INT8_C( -51), INT8_C( -53), INT8_C(   0), INT8_C(   0),
                           INT8_C( 125), INT8_C(  61), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(  -3), INT8_C(   0), INT8_C( -23),
                           INT8_C(   0), INT8_C(  84), INT8_C(   0), INT8_C(-101),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0)) },
    { UINT64_C(          2777207418),
      simde_mm512_set_epi8(INT8_C( -82), INT8_C( -24), INT8_C(  18), INT8_C( 115),
                           INT8_C( -15), INT8_C(  55), INT8_C(  78), INT8_C(  60),
                           INT8_C(  -8), INT8_C( -91), INT8_C( 126), INT8_C(  15),
                           INT8_C(  23), INT8_C(   6), INT8_C( -21), INT8_C( 120),
                           INT8_C( -20), INT8_C(-104), INT8_C( -27), INT8_C(  38),
                           INT8_C(  31), INT8_C( -21), INT8_C(  79), INT8_C( -62),
                           INT8_C(  36), INT8_C(  95), INT8_C(  42), INT8_C(-102),
                           INT8_C( -80), INT8_C( -69), INT8_C( 107), INT8_C(-114),
                           INT8_C(  76), INT8_C( 123), INT8_C(-126), INT8_C( 108),
                           INT8_C( -55), INT8_C(  89), INT8_C( -46), INT8_C(  18),
                           INT8_C( 117), INT8_C(  25), INT8_C(-120), INT8_C(  27),
                           INT8_C(  34), INT8_C(  64), INT8_C(  71), INT8_C(  64),
                           INT8_C( -13), INT8_C( -73), INT8_C( 112), INT8_C(  25),
                           INT8_C( -18), INT8_C( -63), INT8_C( 109), INT8_C(   9),
                           INT8_C(  14), INT8_C(-125), INT8_C( -89), INT8_C(  70),
                           INT8_C(  10), INT8_C(  15), INT8_C( 120), INT8_C( -59)),
      simde_mm512_set_epi8(INT8_C( -52), INT8_C( -61), INT8_C( -14), INT8_C( -38),
                           INT8_C( -93), INT8_C( -34), INT8_C(  64), INT8_C( -67),
                           INT8_C(-123), INT8_C( 123), INT8_C( -93), INT8_C(  41),
                           INT8_C(  97), INT8_C(  -8), INT8_C( -86), INT8_C( -16),
                           INT8_C( -70), INT8_C(   3), INT8_C( 118), INT8_C(  37),
                           INT8_C( 104), INT8_C( 111), INT8_C( -17), INT8_C( 110),
                           INT8_C( -58), INT8_C(  58), INT8_C( 102), INT8_C(  64),
                           INT8_C( -67), INT8_C( -76), INT8_C( -30), INT8_C( 108),
                           INT8_C(  79), INT8_C(  46), INT8_C( -40), INT8_C( 101),
                           INT8_C( -13), INT8_C( -25), INT8_C(  60), INT8_C(  25),
                           INT8_C(  32), INT8_C( -21), INT8_C( 114), INT8_C( -21),
                           INT8_C(  71), INT8_C( -85), INT8_C(  34), INT8_C(  82),
                           INT8_C(-114), INT8_C( -30), INT8_C( -58), INT8_C( 116),
                           INT8_C(  58), INT8_C(-105), INT8_C( 117), INT8_C(  11),
                           INT8_C( -91), INT8_C( 118), INT8_C( -50), INT8_C(  -8),
                           INT8_C( -22), INT8_C(  59), INT8_C( -29), INT8_C( -88)),
      simde_mm512_set_epi8(INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(  -3), INT8_C(   0), INT8_C( -86), INT8_C(   0),
                           INT8_C(   0), INT8_C( 114), INT8_C(   0), INT8_C(  -7),
                           INT8_C(  85), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C( -37), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C( 101), INT8_C( -43), INT8_C(   0), INT8_C( -91),
                           INT8_C(   0), INT8_C(   0), INT8_C(  -8), INT8_C(   0),
                           INT8_C(   0), INT8_C(  13), INT8_C( -39), INT8_C(  78),
                           INT8_C(  32), INT8_C(   0), INT8_C(-107), INT8_C(   0)) },
    { UINT64_C(          3908316288),
      simde_mm512_set_epi8(INT8_C(  16), INT8_C(   5), INT8_C(  18), INT8_C(-104),
                           INT8_C(-119), INT8_C( -46), INT8_C( -92), INT8_C(  37),
                           INT8_C( -84), INT8_C(   2), INT8_C( -49), INT8_C(  99),
                           INT8_C( -79), INT8_C(  48), INT8_C(-103), INT8_C(   3),
                           INT8_C(  54), INT8_C( 118), INT8_C( -53), INT8_C(  24),
                           INT8_C(  56), INT8_C(  78), INT8_C( 121), INT8_C( -10),
                           INT8_C(   4), INT8_C(  97), INT8_C(  53), INT8_C( -46),
                           INT8_C(  92), INT8_C(-100), INT8_C(  47), INT8_C( 107),
                           INT8_C( -52), INT8_C(  68), INT8_C(  11), INT8_C( -16),
                           INT8_C( -66), INT8_C( -79), INT8_C( -14), INT8_C(  27),
                           INT8_C(  14), INT8_C( 125), INT8_C(  22), INT8_C( -82),
                           INT8_C(  44), INT8_C( -12), INT8_C(  94), INT8_C( -30),
                           INT8_C(  98), INT8_C( 125), INT8_C(-107), INT8_C(  37),
                           INT8_C( -66), INT8_C(  90), INT8_C(  68), INT8_C(  10),
                           INT8_C( -72), INT8_C( -10), INT8_C(-119), INT8_C(  -9),
                           INT8_C(  49), INT8_C(-107), INT8_C(  10), INT8_C(  47)),
      simde_mm512_set_epi8(INT8_C( 114), INT8_C(  29), INT8_C( -56), INT8_C( -61),
                           INT8_C(-124), INT8_C(-107), INT8_C( -23), INT8_C( -89),
                           INT8_C(  38), INT8_C( -97), INT8_C( 109), INT8_C(  53),
                           INT8_C(-117), INT8_C(  76), INT8_C( -82), INT8_C( -65),
                           INT8_C( -24), INT8_C( -47), INT8_C(-119), INT8_C(   5),
                           INT8_C(  95), INT8_C(  82), INT8_C(  -3), INT8_C( -62),
                           INT8_C(-116), INT8_C( -98), INT8_C( -29), INT8_C(  77),
                           INT8_C( -38), INT8_C(-118), INT8_C( -85), INT8_C( 121),
                           INT8_C( -72), INT8_C(-111), INT8_C(  28), INT8_C( -18),
                           INT8_C(  64), INT8_C(-126), INT8_C( 122), INT8_C( -54),
                           INT8_C(  87), INT8_C( -22), INT8_C(  17), INT8_C(  50),
                           INT8_C( -83), INT8_C( -39), INT8_C(  77), INT8_C( -13),
                           INT8_C(  17), INT8_C( -66), INT8_C(-128), INT8_C(  77),
                           INT8_C( 107), INT8_C(  47), INT8_C( -68), INT8_C( -44),
                           INT8_C( -30), INT8_C( -22), INT8_C(  14), INT8_C(  26),
                           INT8_C(  59), INT8_C( 103), INT8_C( -54), INT8_C( -39)),
      simde_mm512_set_epi8(INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(  20), INT8_C( -77), INT8_C( -17), INT8_C(   0),
                           INT8_C( 126), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C( -73), INT8_C(-109), INT8_C(   5), INT8_C( 124),
                           INT8_C(   0), INT8_C(  27), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(  21), INT8_C(   0),
                           INT8_C(  83), INT8_C(  43), INT8_C(   0), INT8_C(   0),
                           INT8_C( -42), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0)) },
    { UINT64_C(          2902744348),
      simde_mm512_set_epi8(INT8_C(  19), INT8_C( -37), INT8_C( -32), INT8_C( -59),
                           INT8_C(  33), INT8_C( 110), INT8_C(  17), INT8_C(  67),
                           INT8_C(  51), INT8_C( -19), INT8_C(  91), INT8_C(  26),
                           INT8_C(  33), INT8_C( -43), INT8_C( -14), INT8_C( -56),
                           INT8_C( 112), INT8_C( -72), INT8_C(  96), INT8_C( -62),
                           INT8_C( -21), INT8_C(  96), INT8_C( -25), INT8_C( 104),
                           INT8_C( -56), INT8_C( -56), INT8_C(  57), INT8_C( -25),
                           INT8_C(  -3), INT8_C(  99), INT8_C(  -6), INT8_C(  31),
                           INT8_C( -96), INT8_C(  49), INT8_C( 110), INT8_C( -10),
                           INT8_C( -82), INT8_C(  32), INT8_C( -27), INT8_C( 112),
                           INT8_C(  84), INT8_C(  37), INT8_C( -62), INT8_C(  38),
                           INT8_C( -53), INT8_C( -97), INT8_C(  76), INT8_C(  13),
                           INT8_C(-124), INT8_C(-120), INT8_C( -86), INT8_C(  98),
                           INT8_C(  96), INT8_C(   4), INT8_C(   4), INT8_C(  94),
                           INT8_C( -41), INT8_C( -81), INT8_C( -40), INT8_C( -28),
                           INT8_C( -23), INT8_C( -59), INT8_C( -15), INT8_C( -40)),
      simde_mm512_set_epi8(INT8_C(   3), INT8_C(  -6), INT8_C( -45), INT8_C( -75),
                           INT8_C( -83), INT8_C(-118), INT8_C(  74), INT8_C(  35),
                           INT8_C(  38), INT8_C(   4), INT8_C(  35), INT8_C(  15),
                           INT8_C( -42), INT8_C(  71), INT8_C(  -1), INT8_C(  27),
                           INT8_C( -48), INT8_C( -77), INT8_C( 116), INT8_C(  52),
                           INT8_C(  99), INT8_C(  26), INT8_C(  93), INT8_C(-101),
                           INT8_C( -50), INT8_C(   0), INT8_C(  80), INT8_C(-123),
                           INT8_C(  19), INT8_C( 112), INT8_C(  30), INT8_C(  95),
                           INT8_C(  58), INT8_C(  21), INT8_C(  13), INT8_C(  32),
                           INT8_C( 113), INT8_C( 126), INT8_C(  27), INT8_C( 113),
                           INT8_C( 121), INT8_C(  97), INT8_C(  51), INT8_C( -16),
                           INT8_C( -77), INT8_C(  84), INT8_C(  16), INT8_C(-112),
                           INT8_C( -40), INT8_C( -69), INT8_C(-116), INT8_C( -97),
                           INT8_C(-120), INT8_C( 102), INT8_C( -82), INT8_C( -42),
                           INT8_C(  43), INT8_C( -70), INT8_C(  46), INT8_C(  17),
                           INT8_C( 108), INT8_C( -47), INT8_C(  53), INT8_C( -84)),
      simde_mm512_set_epi8(INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C( 102), INT8_C(   0), INT8_C(  97), INT8_C(   0),
                           INT8_C(  61), INT8_C( -94), INT8_C(   0), INT8_C(  -1),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C(  75), INT8_C(   0), INT8_C(   0),
                           INT8_C(   0), INT8_C( -51), INT8_C(   0), INT8_C( -61),
                           INT8_C( -40), INT8_C( -98), INT8_C(   0), INT8_C(-120),
                           INT8_C(   0), INT8_C(   0), INT8_C(   0), INT8_C( -45),
                           INT8_C( 125), INT8_C( -12), INT8_C(   0), INT8_C(   0)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m512i r = simde_mm512_maskz_sub_epi8(test_vec[i].k, test_vec[i].a, test_vec[i].b);
    simde_assert_m512i_i8(r, ==, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm512_sub_epi16(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m512i a;
    simde__m512i b;
    simde__m512i r;
  } test_vec[8] = {
    { simde_mm512_set_epi16(INT16_C( 21075), INT16_C( 30017), INT16_C(-11898), INT16_C( 29710),
                            INT16_C( 19457), INT16_C(-12796), INT16_C( 21427), INT16_C( 28826),
                            INT16_C( 25482), INT16_C(-11843), INT16_C( 15582), INT16_C( 20114),
                            INT16_C(-14761), INT16_C(-15590), INT16_C( -4142), INT16_C( 29932),
                            INT16_C(-30672), INT16_C(  6190), INT16_C( 26590), INT16_C( 10803),
                            INT16_C(-16554), INT16_C( 15816), INT16_C( 14967), INT16_C( 24063),
                            INT16_C(-14713), INT16_C( -8094), INT16_C(-16817), INT16_C( 25507),
                            INT16_C( 19912), INT16_C(-19929), INT16_C(-12604), INT16_C(-17156)),
      simde_mm512_set_epi16(INT16_C( 27175), INT16_C(-27122), INT16_C( -6914), INT16_C( 10212),
                            INT16_C( 13894), INT16_C( -4620), INT16_C(-10724), INT16_C( -3078),
                            INT16_C( 29698), INT16_C(  6009), INT16_C( 28893), INT16_C(-31734),
                            INT16_C( -3957), INT16_C(  6787), INT16_C(  9325), INT16_C(  7645),
                            INT16_C( -2133), INT16_C( -9633), INT16_C(-22525), INT16_C(  1124),
                            INT16_C( 21781), INT16_C( 17119), INT16_C(-19461), INT16_C(-32134),
                            INT16_C( -7507), INT16_C( 19092), INT16_C( 21408), INT16_C(-14444),
                            INT16_C( 22843), INT16_C( 28625), INT16_C( -2322), INT16_C(  5251)),
      simde_mm512_set_epi16(INT16_C( -6100), INT16_C( -8397), INT16_C( -4984), INT16_C( 19498),
                            INT16_C(  5563), INT16_C( -8176), INT16_C( 32151), INT16_C( 31904),
                            INT16_C( -4216), INT16_C(-17852), INT16_C(-13311), INT16_C(-13688),
                            INT16_C(-10804), INT16_C(-22377), INT16_C(-13467), INT16_C( 22287),
                            INT16_C(-28539), INT16_C( 15823), INT16_C(-16421), INT16_C(  9679),
                            INT16_C( 27201), INT16_C( -1303), INT16_C(-31108), INT16_C( -9339),
                            INT16_C( -7206), INT16_C(-27186), INT16_C( 27311), INT16_C(-25585),
                            INT16_C( -2931), INT16_C( 16982), INT16_C(-10282), INT16_C(-22407)) },
    { simde_mm512_set_epi16(INT16_C(-27508), INT16_C(  5509), INT16_C(-13526), INT16_C( 16909),
                            INT16_C(  2419), INT16_C( 22142), INT16_C( -6109), INT16_C( -1177),
                            INT16_C(  9839), INT16_C(  6329), INT16_C(  -239), INT16_C(-15885),
                            INT16_C(  3666), INT16_C( 20122), INT16_C( -1699), INT16_C(  6503),
                            INT16_C( 29169), INT16_C( -4681), INT16_C( -2713), INT16_C(-24709),
                            INT16_C(  7221), INT16_C( -3718), INT16_C(   970), INT16_C(-15558),
                            INT16_C(-11011), INT16_C(-10787), INT16_C(-29970), INT16_C(  3894),
                            INT16_C(-25914), INT16_C(-18758), INT16_C( 11824), INT16_C( -8868)),
      simde_mm512_set_epi16(INT16_C(  1604), INT16_C( 19874), INT16_C(-12133), INT16_C( -1966),
                            INT16_C( 13041), INT16_C(  1566), INT16_C(-11791), INT16_C( -3425),
                            INT16_C(  7377), INT16_C(-23380), INT16_C( -9249), INT16_C(-31251),
                            INT16_C( 14877), INT16_C( 24009), INT16_C(-32316), INT16_C(  8308),
                            INT16_C(-11725), INT16_C(-10230), INT16_C(  1074), INT16_C( 12341),
                            INT16_C( 19989), INT16_C( 16491), INT16_C(  4144), INT16_C(-11714),
                            INT16_C( 19285), INT16_C(-29198), INT16_C(-25258), INT16_C(-29514),
                            INT16_C(  9755), INT16_C(-29385), INT16_C(-23111), INT16_C( -3412)),
      simde_mm512_set_epi16(INT16_C(-29112), INT16_C(-14365), INT16_C( -1393), INT16_C( 18875),
                            INT16_C(-10622), INT16_C( 20576), INT16_C(  5682), INT16_C(  2248),
                            INT16_C(  2462), INT16_C( 29709), INT16_C(  9010), INT16_C( 15366),
                            INT16_C(-11211), INT16_C( -3887), INT16_C( 30617), INT16_C( -1805),
                            INT16_C(-24642), INT16_C(  5549), INT16_C( -3787), INT16_C( 28486),
                            INT16_C(-12768), INT16_C(-20209), INT16_C( -3174), INT16_C( -3844),
                            INT16_C(-30296), INT16_C( 18411), INT16_C( -4712), INT16_C(-32128),
                            INT16_C( 29867), INT16_C( 10627), INT16_C(-30601), INT16_C( -5456)) },
    { simde_mm512_set_epi16(INT16_C(   691), INT16_C( -4823), INT16_C( -3253), INT16_C(-31392),
                            INT16_C(-21784), INT16_C( -6740), INT16_C(  9130), INT16_C(-18273),
                            INT16_C( 11275), INT16_C(-27092), INT16_C(    90), INT16_C(-20133),
                            INT16_C( 30523), INT16_C( 27008), INT16_C( 28387), INT16_C( 17266),
                            INT16_C( -9777), INT16_C( 27096), INT16_C( -8328), INT16_C( -6812),
                            INT16_C(-22954), INT16_C( -4409), INT16_C( 21734), INT16_C(-19695),
                            INT16_C(-11981), INT16_C(-21195), INT16_C( 18272), INT16_C( 28327),
                            INT16_C(  7123), INT16_C(-32216), INT16_C( 24489), INT16_C(-15668)),
      simde_mm512_set_epi16(INT16_C(-21377), INT16_C( 15856), INT16_C(  7686), INT16_C(-28568),
                            INT16_C(-15192), INT16_C( -9747), INT16_C( 11300), INT16_C( 27000),
                            INT16_C( -6635), INT16_C(  3626), INT16_C( 12716), INT16_C(-30571),
                            INT16_C( 31697), INT16_C(  5622), INT16_C( 24444), INT16_C( -8226),
                            INT16_C( -8263), INT16_C(  2890), INT16_C( 26732), INT16_C( -8763),
                            INT16_C(-13950), INT16_C( 27415), INT16_C(  7653), INT16_C( 31511),
                            INT16_C(-21082), INT16_C(  2398), INT16_C( 23365), INT16_C(-12903),
                            INT16_C(-18221), INT16_C(  4204), INT16_C(-20453), INT16_C( 15021)),
      simde_mm512_set_epi16(INT16_C( 22068), INT16_C(-20679), INT16_C(-10939), INT16_C( -2824),
                            INT16_C( -6592), INT16_C(  3007), INT16_C( -2170), INT16_C( 20263),
                            INT16_C( 17910), INT16_C(-30718), INT16_C(-12626), INT16_C( 10438),
                            INT16_C( -1174), INT16_C( 21386), INT16_C(  3943), INT16_C( 25492),
                            INT16_C( -1514), INT16_C( 24206), INT16_C( 30476), INT16_C(  1951),
                            INT16_C( -9004), INT16_C(-31824), INT16_C( 14081), INT16_C( 14330),
                            INT16_C(  9101), INT16_C(-23593), INT16_C( -5093), INT16_C(-24306),
                            INT16_C( 25344), INT16_C( 29116), INT16_C(-20594), INT16_C(-30689)) },
    { simde_mm512_set_epi16(INT16_C(  4451), INT16_C( -3121), INT16_C( 11648), INT16_C( 14185),
                            INT16_C( -8499), INT16_C(-24679), INT16_C(-31633), INT16_C( 19019),
                            INT16_C( 26210), INT16_C(-29943), INT16_C(-18883), INT16_C( 25468),
                            INT16_C( 20366), INT16_C(  4961), INT16_C(-25468), INT16_C( -4158),
                            INT16_C(  6653), INT16_C( -1720), INT16_C(-29723), INT16_C(-14244),
                            INT16_C( -4917), INT16_C(   730), INT16_C(-20677), INT16_C( 16986),
                            INT16_C(  9316), INT16_C( 28795), INT16_C(-18273), INT16_C(-29423),
                            INT16_C(-23674), INT16_C(  7963), INT16_C( 28019), INT16_C( 13728)),
      simde_mm512_set_epi16(INT16_C(-10770), INT16_C( 29411), INT16_C( 30463), INT16_C( -4902),
                            INT16_C(-20392), INT16_C(-28251), INT16_C( 11448), INT16_C( 27155),
                            INT16_C(-11669), INT16_C( 11820), INT16_C(-16512), INT16_C( 10540),
                            INT16_C( 17477), INT16_C(-19759), INT16_C( 28024), INT16_C(-14431),
                            INT16_C( 24400), INT16_C( -7583), INT16_C(-12129), INT16_C( 28592),
                            INT16_C(-31057), INT16_C(-18091), INT16_C( 19926), INT16_C(-29261),
                            INT16_C(  7501), INT16_C( 16620), INT16_C(  6953), INT16_C(  3437),
                            INT16_C(  5790), INT16_C(  5348), INT16_C( 17145), INT16_C(-28791)),
      simde_mm512_set_epi16(INT16_C( 15221), INT16_C(-32532), INT16_C(-18815), INT16_C( 19087),
                            INT16_C( 11893), INT16_C(  3572), INT16_C( 22455), INT16_C( -8136),
                            INT16_C(-27657), INT16_C( 23773), INT16_C( -2371), INT16_C( 14928),
                            INT16_C(  2889), INT16_C( 24720), INT16_C( 12044), INT16_C( 10273),
                            INT16_C(-17747), INT16_C(  5863), INT16_C(-17594), INT16_C( 22700),
                            INT16_C( 26140), INT16_C( 18821), INT16_C( 24933), INT16_C(-19289),
                            INT16_C(  1815), INT16_C( 12175), INT16_C(-25226), INT16_C( 32676),
                            INT16_C(-29464), INT16_C(  2615), INT16_C( 10874), INT16_C(-23017)) },
    { simde_mm512_set_epi16(INT16_C(-31561), INT16_C( 18949), INT16_C( -2287), INT16_C(-20534),
                            INT16_C( -1057), INT16_C( -3046), INT16_C( 22138), INT16_C(-11031),
                            INT16_C(    43), INT16_C( -6266), INT16_C(-20090), INT16_C(-22393),
                            INT16_C(-26046), INT16_C(-23703), INT16_C( 28092), INT16_C(  6346),
                            INT16_C( 10308), INT16_C(   572), INT16_C(     5), INT16_C( 15306),
                            INT16_C(-19429), INT16_C( -5811), INT16_C(-27420), INT16_C(-29128),
                            INT16_C(-13676), INT16_C( -3673), INT16_C(-26157), INT16_C( 19197),
                            INT16_C(-27593), INT16_C(-20030), INT16_C(  3690), INT16_C( -3850)),
      simde_mm512_set_epi16(INT16_C(-11908), INT16_C( 14774), INT16_C(  5244), INT16_C( 18107),
                            INT16_C(-16396), INT16_C( 31910), INT16_C(-28865), INT16_C(-20038),
                            INT16_C(-19234), INT16_C(-15108), INT16_C(-10436), INT16_C( 19911),
                            INT16_C(  3330), INT16_C( 28633), INT16_C( 10550), INT16_C( -9358),
                            INT16_C( 23697), INT16_C( 19726), INT16_C(-26407), INT16_C(-18878),
                            INT16_C(  4326), INT16_C(-22642), INT16_C(-17402), INT16_C( 16035),
                            INT16_C( 14223), INT16_C(-15160), INT16_C( -9470), INT16_C( -3752),
                            INT16_C(  6710), INT16_C( 21116), INT16_C( -9579), INT16_C( 10253)),
      simde_mm512_set_epi16(INT16_C(-19653), INT16_C(  4175), INT16_C( -7531), INT16_C( 26895),
                            INT16_C( 15339), INT16_C( 30580), INT16_C(-14533), INT16_C(  9007),
                            INT16_C( 19277), INT16_C(  8842), INT16_C( -9654), INT16_C( 23232),
                            INT16_C(-29376), INT16_C( 13200), INT16_C( 17542), INT16_C( 15704),
                            INT16_C(-13389), INT16_C(-19154), INT16_C( 26412), INT16_C(-31352),
                            INT16_C(-23755), INT16_C( 16831), INT16_C(-10018), INT16_C( 20373),
                            INT16_C(-27899), INT16_C( 11487), INT16_C(-16687), INT16_C( 22949),
                            INT16_C( 31233), INT16_C( 24390), INT16_C( 13269), INT16_C(-14103)) },
    { simde_mm512_set_epi16(INT16_C(  1468), INT16_C( -4389), INT16_C(  1296), INT16_C(-27715),
                            INT16_C(-15620), INT16_C(  3731), INT16_C( -7289), INT16_C(-27703),
                            INT16_C(   474), INT16_C( 27447), INT16_C( -9036), INT16_C(  9176),
                            INT16_C(  2726), INT16_C(-12144), INT16_C( -2101), INT16_C( 26907),
                            INT16_C(-24700), INT16_C(  1244), INT16_C( -3927), INT16_C(-22632),
                            INT16_C( -7525), INT16_C( 17743), INT16_C( 15263), INT16_C( -3823),
                            INT16_C( 27307), INT16_C( 32391), INT16_C(-23270), INT16_C(-29301),
                            INT16_C( 23369), INT16_C(-15291), INT16_C( -5840), INT16_C( 18168)),
      simde_mm512_set_epi16(INT16_C( 23449), INT16_C( 17725), INT16_C(-20919), INT16_C( 31466),
                            INT16_C( 31308), INT16_C( -2183), INT16_C(-31351), INT16_C(-32386),
                            INT16_C( 26890), INT16_C(-30591), INT16_C(-12785), INT16_C(-23638),
                            INT16_C(-31955), INT16_C( -9847), INT16_C( 19108), INT16_C(-19915),
                            INT16_C(  4587), INT16_C( 27034), INT16_C(   -19), INT16_C( 28332),
                            INT16_C(-23789), INT16_C(-24960), INT16_C( -5839), INT16_C( 25722),
                            INT16_C(-24423), INT16_C( 15592), INT16_C(  6092), INT16_C( -9272),
                            INT16_C(-12796), INT16_C(-17663), INT16_C( -6154), INT16_C( 23859)),
      simde_mm512_set_epi16(INT16_C(-21981), INT16_C(-22114), INT16_C( 22215), INT16_C(  6355),
                            INT16_C( 18608), INT16_C(  5914), INT16_C( 24062), INT16_C(  4683),
                            INT16_C(-26416), INT16_C( -7498), INT16_C(  3749), INT16_C(-32722),
                            INT16_C(-30855), INT16_C( -2297), INT16_C(-21209), INT16_C(-18714),
                            INT16_C(-29287), INT16_C(-25790), INT16_C( -3908), INT16_C( 14572),
                            INT16_C( 16264), INT16_C(-22833), INT16_C( 21102), INT16_C(-29545),
                            INT16_C(-13806), INT16_C( 16799), INT16_C(-29362), INT16_C(-20029),
                            INT16_C(-29371), INT16_C(  2372), INT16_C(   314), INT16_C( -5691)) },
    { simde_mm512_set_epi16(INT16_C(-22741), INT16_C( 13394), INT16_C( -9417), INT16_C( 28906),
                            INT16_C(-18980), INT16_C( -8463), INT16_C(  9174), INT16_C(-25605),
                            INT16_C(   547), INT16_C(  3767), INT16_C(-12577), INT16_C(-16546),
                            INT16_C( -1301), INT16_C( -7147), INT16_C( 26281), INT16_C( 29309),
                            INT16_C( 29052), INT16_C(-30842), INT16_C(  5995), INT16_C(  6270),
                            INT16_C( 20539), INT16_C( 10179), INT16_C(-26848), INT16_C( 14327),
                            INT16_C( 15491), INT16_C( 18652), INT16_C( 19903), INT16_C( 30123),
                            INT16_C( 25261), INT16_C(-17460), INT16_C( 10742), INT16_C( -4552)),
      simde_mm512_set_epi16(INT16_C(  5754), INT16_C(-23038), INT16_C(-16589), INT16_C(-23858),
                            INT16_C( -3821), INT16_C( -4798), INT16_C( 30602), INT16_C(-28532),
                            INT16_C( 11508), INT16_C(  7979), INT16_C( -3877), INT16_C( -5920),
                            INT16_C(-24150), INT16_C(-24496), INT16_C( 17421), INT16_C( -1981),
                            INT16_C( 27523), INT16_C( 26800), INT16_C( 25010), INT16_C( 27339),
                            INT16_C( -9050), INT16_C( 19128), INT16_C( 15279), INT16_C( -1817),
                            INT16_C(-13923), INT16_C(  5129), INT16_C(-22618), INT16_C( 27704),
                            INT16_C( -4783), INT16_C( 31238), INT16_C(-30342), INT16_C( -8854)),
      simde_mm512_set_epi16(INT16_C(-28495), INT16_C(-29104), INT16_C(  7172), INT16_C(-12772),
                            INT16_C(-15159), INT16_C( -3665), INT16_C(-21428), INT16_C(  2927),
                            INT16_C(-10961), INT16_C( -4212), INT16_C( -8700), INT16_C(-10626),
                            INT16_C( 22849), INT16_C( 17349), INT16_C(  8860), INT16_C( 31290),
                            INT16_C(  1529), INT16_C(  7894), INT16_C(-19015), INT16_C(-21069),
                            INT16_C( 29589), INT16_C( -8949), INT16_C( 23409), INT16_C( 16144),
                            INT16_C( 29414), INT16_C( 13523), INT16_C(-23015), INT16_C(  2419),
                            INT16_C( 30044), INT16_C( 16838), INT16_C(-24452), INT16_C(  4302)) },
    { simde_mm512_set_epi16(INT16_C( 27021), INT16_C( 31131), INT16_C(    63), INT16_C(-10530),
                            INT16_C( -1071), INT16_C(-31284), INT16_C(-21788), INT16_C(-16108),
                            INT16_C(-15167), INT16_C( 25422), INT16_C( 14520), INT16_C(-13896),
                            INT16_C( 20399), INT16_C( 31915), INT16_C(-16518), INT16_C( -6202),
                            INT16_C(-16332), INT16_C( -3071), INT16_C(-15644), INT16_C( -7016),
                            INT16_C( 13977), INT16_C(-13846), INT16_C(-23290), INT16_C( -2079),
                            INT16_C(  4753), INT16_C( 14919), INT16_C(-18528), INT16_C(  7420),
                            INT16_C( 12098), INT16_C( 31014), INT16_C( 17813), INT16_C(-14456)),
      simde_mm512_set_epi16(INT16_C(-12529), INT16_C( -3643), INT16_C(-28826), INT16_C(-12110),
                            INT16_C(  8030), INT16_C( 20316), INT16_C( 27324), INT16_C( 24735),
                            INT16_C( -6774), INT16_C( -2704), INT16_C(-31930), INT16_C(  6874),
                            INT16_C( -3952), INT16_C(  2658), INT16_C(  -904), INT16_C( -8319),
                            INT16_C(-16424), INT16_C( 22778), INT16_C( 18985), INT16_C( 10063),
                            INT16_C(-31751), INT16_C( 16016), INT16_C(-30217), INT16_C( 18364),
                            INT16_C(-20176), INT16_C( -4961), INT16_C(-29576), INT16_C(-16634),
                            INT16_C( -8011), INT16_C(-27110), INT16_C(-24526), INT16_C(-11504)),
      simde_mm512_set_epi16(INT16_C(-25986), INT16_C(-30762), INT16_C( 28889), INT16_C(  1580),
                            INT16_C( -9101), INT16_C( 13936), INT16_C( 16424), INT16_C( 24693),
                            INT16_C( -8393), INT16_C( 28126), INT16_C(-19086), INT16_C(-20770),
                            INT16_C( 24351), INT16_C( 29257), INT16_C(-15614), INT16_C(  2117),
                            INT16_C(    92), INT16_C(-25849), INT16_C( 30907), INT16_C(-17079),
                            INT16_C(-19808), INT16_C(-29862), INT16_C(  6927), INT16_C(-20443),
                            INT16_C( 24929), INT16_C( 19880), INT16_C( 11048), INT16_C( 24054),
                            INT16_C( 20109), INT16_C( -7412), INT16_C(-23197), INT16_C( -2952)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m512i r = simde_mm512_sub_epi16(test_vec[i].a, test_vec[i].b);
    simde_assert_m512i_i16(r, ==, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm512_sub_epi32(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m512i a;
    simde__m512i b;
    simde__m512i r;
  } test_vec[8] = {
    { simde_mm512_set_epi32(INT32_C(-2076524081), INT32_C( 1825078206), INT32_C(-1787857556), INT32_C(-1179707533),
                            INT32_C(  233802890), INT32_C( 1015107327), INT32_C(-1130135421), INT32_C(  769270921),
                            INT32_C(  970769619), INT32_C( -152032958), INT32_C(-1037455861), INT32_C( 1543352525),
                            INT32_C( 1997985923), INT32_C( 1878044503), INT32_C(   49641854), INT32_C(   78691943)),
      simde_mm512_set_epi32(INT32_C( 1273959589), INT32_C(  730948807), INT32_C(  152082522), INT32_C(  516109144),
                            INT32_C( -608654122), INT32_C(  326583665), INT32_C(-2143544685), INT32_C( 2015525957),
                            INT32_C(-1762782050), INT32_C( 1423018518), INT32_C(-1835751490), INT32_C(-1847524510),
                            INT32_C( 1152317453), INT32_C( -732966175), INT32_C(  916913335), INT32_C(-1961618071)),
      simde_mm512_set_epi32(INT32_C(  944483626), INT32_C( 1094129399), INT32_C(-1939940078), INT32_C(-1695816677),
                            INT32_C(  842457012), INT32_C(  688523662), INT32_C( 1013409264), INT32_C(-1246255036),
                            INT32_C(-1561415627), INT32_C(-1575051476), INT32_C(  798295629), INT32_C( -904090261),
                            INT32_C(  845668470), INT32_C(-1683956618), INT32_C( -867271481), INT32_C( 2040310014)) },
    { simde_mm512_set_epi32(INT32_C( 1516029066), INT32_C( 1696213023), INT32_C(  690963136), INT32_C( -395017807),
                            INT32_C(-1227102652), INT32_C( 1731549524), INT32_C( 1416885076), INT32_C( -891143280),
                            INT32_C(-1187279454), INT32_C(  699906112), INT32_C(  947982370), INT32_C(-1809113234),
                            INT32_C(  892884346), INT32_C(  173663466), INT32_C( -426903082), INT32_C(-1178201759)),
      simde_mm512_set_epi32(INT32_C(  565568434), INT32_C( 1477571639), INT32_C( -962268135), INT32_C(   93801511),
                            INT32_C( 1166085377), INT32_C(-1613873583), INT32_C( 1514751666), INT32_C(   -9777248),
                            INT32_C(  880861168), INT32_C(-1847118927), INT32_C( -454330268), INT32_C( -465889797),
                            INT32_C(  607148382), INT32_C( -892911578), INT32_C(-1830027716), INT32_C(  171620514)),
      simde_mm512_set_epi32(INT32_C(  950460632), INT32_C(  218641384), INT32_C( 1653231271), INT32_C( -488819318),
                            INT32_C( 1901779267), INT32_C( -949544189), INT32_C(  -97866590), INT32_C( -881366032),
                            INT32_C(-2068140622), INT32_C(-1747942257), INT32_C( 1402312638), INT32_C(-1343223437),
                            INT32_C(  285735964), INT32_C( 1066575044), INT32_C( 1403124634), INT32_C(-1349822273)) },
    { simde_mm512_set_epi32(INT32_C( -894737208), INT32_C( -894707310), INT32_C(-1734937643), INT32_C(-1821919338),
                            INT32_C(-1629473200), INT32_C( 1017176222), INT32_C(  555630880), INT32_C( 1893052174),
                            INT32_C( -395602197), INT32_C(  851153269), INT32_C( 1448617638), INT32_C( 1939202047),
                            INT32_C(-1165352739), INT32_C(  784136789), INT32_C(-1222569677), INT32_C(-1663359991)),
      simde_mm512_set_epi32(INT32_C(-2134962383), INT32_C(  711344265), INT32_C( -499544380), INT32_C(  658556967),
                            INT32_C(-1607446648), INT32_C(-2074003952), INT32_C(  449264495), INT32_C( -469125832),
                            INT32_C(-1465796532), INT32_C( -575249454), INT32_C( -236269065), INT32_C(  567769266),
                            INT32_C( -145854210), INT32_C(  502784491), INT32_C( -258238741), INT32_C( 1554234017)),
      simde_mm512_set_epi32(INT32_C( 1240225175), INT32_C(-1606051575), INT32_C(-1235393263), INT32_C( 1814490991),
                            INT32_C(  -22026552), INT32_C(-1203787122), INT32_C(  106366385), INT32_C(-1932789290),
                            INT32_C( 1070194335), INT32_C( 1426402723), INT32_C( 1684886703), INT32_C( 1371432781),
                            INT32_C(-1019498529), INT32_C(  281352298), INT32_C( -964330936), INT32_C( 1077373288)) },
    { simde_mm512_set_epi32(INT32_C( -658606825), INT32_C(-1465142546), INT32_C(-1613315081), INT32_C( 1981327993),
                            INT32_C( -540883338), INT32_C(  -52568431), INT32_C(  513288938), INT32_C(-1741957410),
                            INT32_C( -457290370), INT32_C(  949496535), INT32_C( -574503672), INT32_C( -516003313),
                            INT32_C( 1705152287), INT32_C(  268459282), INT32_C( -796672854), INT32_C(-2124069536)),
      simde_mm512_set_epi32(INT32_C(-1627464574), INT32_C(  688417349), INT32_C(-1204757032), INT32_C(-1541532775),
                            INT32_C( -489028243), INT32_C(  -14341503), INT32_C( 1546753292), INT32_C( -383774267),
                            INT32_C( 1479759913), INT32_C(-1792003336), INT32_C(  324281321), INT32_C(-1031805126),
                            INT32_C(-1668912025), INT32_C( -271675366), INT32_C(-1502890080), INT32_C( -582208760)),
      simde_mm512_set_epi32(INT32_C(  968857749), INT32_C( 2141407401), INT32_C( -408558049), INT32_C( -772106528),
                            INT32_C(  -51855095), INT32_C(  -38226928), INT32_C(-1033464354), INT32_C(-1358183143),
                            INT32_C(-1937050283), INT32_C(-1553467425), INT32_C( -898784993), INT32_C(  515801813),
                            INT32_C( -920902984), INT32_C(  540134648), INT32_C(  706217226), INT32_C(-1541860776)) },
    { simde_mm512_set_epi32(INT32_C( 1656401797), INT32_C(   50049750), INT32_C( -488722048), INT32_C( 1532620410),
                            INT32_C(  761833085), INT32_C(  -28253750), INT32_C( 1071891913), INT32_C( -578065038),
                            INT32_C( 2114869114), INT32_C( 1114386003), INT32_C( -192755303), INT32_C( -163390023),
                            INT32_C(-1012186074), INT32_C( -258665152), INT32_C(  548389384), INT32_C( -601025611)),
      simde_mm512_set_epi32(INT32_C( -962813354), INT32_C(-1563683363), INT32_C( 1476422960), INT32_C(-1996230234),
                            INT32_C(  594356694), INT32_C(  -37573818), INT32_C( 2109710080), INT32_C(-2049942476),
                            INT32_C(-1449482441), INT32_C(-1892730921), INT32_C( 1298337068), INT32_C(   30251788),
                            INT32_C( -250852108), INT32_C(-2130168940), INT32_C(  414197854), INT32_C( -971416192)),
      simde_mm512_set_epi32(INT32_C(-1675752145), INT32_C( 1613733113), INT32_C(-1965145008), INT32_C( -766116652),
                            INT32_C(  167476391), INT32_C(    9320068), INT32_C(-1037818167), INT32_C( 1471877438),
                            INT32_C( -730615741), INT32_C(-1287850372), INT32_C(-1491092371), INT32_C( -193641811),
                            INT32_C( -761333966), INT32_C( 1871503788), INT32_C(  134191530), INT32_C(  370390581)) },
    { simde_mm512_set_epi32(INT32_C(  841332080), INT32_C(  332746710), INT32_C( 1180202036), INT32_C(-1365461084),
                            INT32_C( -972107726), INT32_C( -919074620), INT32_C(  336794208), INT32_C(-2145769013),
                            INT32_C(-1090767268), INT32_C( 1447456701), INT32_C(-1878509449), INT32_C( 1479468832),
                            INT32_C(-2038652659), INT32_C( -428110707), INT32_C( -605535334), INT32_C( 1876977582)),
      simde_mm512_set_epi32(INT32_C(-1104919125), INT32_C(-1965384352), INT32_C( 1846340148), INT32_C( 1439724559),
                            INT32_C( 1174009148), INT32_C( -500908704), INT32_C( 2074430235), INT32_C(  746110301),
                            INT32_C( -229497465), INT32_C(  567264435), INT32_C(-1820479715), INT32_C( -409682629),
                            INT32_C(-1976550605), INT32_C(-1717329929), INT32_C(  392593328), INT32_C(  809330056)),
      simde_mm512_set_epi32(INT32_C( 1946251205), INT32_C(-1996836234), INT32_C( -666138112), INT32_C( 1489781653),
                            INT32_C(-2146116874), INT32_C( -418165916), INT32_C(-1737636027), INT32_C( 1403087982),
                            INT32_C( -861269803), INT32_C(  880192266), INT32_C(  -58029734), INT32_C( 1889151461),
                            INT32_C(  -62102054), INT32_C( 1289219222), INT32_C( -998128662), INT32_C( 1067647526)) },
    { simde_mm512_set_epi32(INT32_C(-1188475624), INT32_C(-1471681451), INT32_C( -219755555), INT32_C(-1657771963),
                            INT32_C( -257604504), INT32_C(  874981434), INT32_C(-1610485047), INT32_C(-1272947332),
                            INT32_C( 1561476022), INT32_C(  375243187), INT32_C( 1479356717), INT32_C( 1523794483),
                            INT32_C(-1698967593), INT32_C(  -80864233), INT32_C( 1644091986), INT32_C( -229623607)),
      simde_mm512_set_epi32(INT32_C(    9741774), INT32_C(  693305140), INT32_C(-1221395242), INT32_C(-1923328842),
                            INT32_C(   85084148), INT32_C( 1125599333), INT32_C( 2042080920), INT32_C( -456911551),
                            INT32_C( -399701639), INT32_C(-1860388051), INT32_C( -699039468), INT32_C(   84523143),
                            INT32_C(-1293034841), INT32_C(-1626054083), INT32_C(   96950550), INT32_C( 1663457642)),
      simde_mm512_set_epi32(INT32_C(-1198217398), INT32_C( 2129980705), INT32_C( 1001639687), INT32_C(  265556879),
                            INT32_C( -342688652), INT32_C( -250617899), INT32_C(  642401329), INT32_C( -816035781),
                            INT32_C( 1961177661), INT32_C(-2059336058), INT32_C(-2116571111), INT32_C( 1439271340),
                            INT32_C( -405932752), INT32_C( 1545189850), INT32_C( 1547141436), INT32_C(-1893081249)) },
    { simde_mm512_set_epi32(INT32_C(-1473946007), INT32_C(  121708864), INT32_C( 1020809582), INT32_C( 1669312470),
                            INT32_C( -682688365), INT32_C(  500732292), INT32_C( 1673154382), INT32_C(-1552445241),
                            INT32_C( 2068495467), INT32_C(-2039438173), INT32_C(  869593130), INT32_C( -471794528),
                            INT32_C(-1539319849), INT32_C( 1041904784), INT32_C( -120989465), INT32_C(-1180697219)),
      simde_mm512_set_epi32(INT32_C( 1388066655), INT32_C( 1341381019), INT32_C(-1738591736), INT32_C( -783428109),
                            INT32_C(-1884288937), INT32_C( 1340467391), INT32_C(-1349575878), INT32_C(-1411283384),
                            INT32_C( 1173507492), INT32_C( 1805408001), INT32_C( 1184512890), INT32_C(-1180223583),
                            INT32_C( -121255394), INT32_C(-2007254522), INT32_C(  970045213), INT32_C(-2132245994)),
      simde_mm512_set_epi32(INT32_C( 1432954634), INT32_C(-1219672155), INT32_C(-1535565978), INT32_C(-1842226717),
                            INT32_C( 1201600572), INT32_C( -839735099), INT32_C(-1272237036), INT32_C( -141161857),
                            INT32_C(  894987975), INT32_C(  450121122), INT32_C( -314919760), INT32_C(  708429055),
                            INT32_C(-1418064455), INT32_C(-1245807990), INT32_C(-1091034678), INT32_C(  951548775)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m512i r = simde_mm512_sub_epi32(test_vec[i].a, test_vec[i].b);
    simde_assert_m512i_i32(r, ==, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm512_sub_epi64(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m512i a;
    simde__m512i b;
    simde__m512i r;
  } test_vec[8] = {
    { simde_mm512_set_epi64(INT64_C(-8918603015426376770), INT64_C(-7678789729811228813),
                            INT64_C( 1004175767275392767), INT64_C(-4853894672476920695),
                            INT64_C( 4169423769698314562), INT64_C(-4455838992495169331),
                            INT64_C( 8581284199031418711), INT64_C(  213210139521498727)),
      simde_mm512_set_epi64(INT64_C( 5471614771911550151), INT64_C(  653189458799309656),
                            INT64_C(-2614149548239010447), INT64_C(-9206454317574095803),
                            INT64_C(-7571091253302818282), INT64_C(-7884492610685828254),
                            INT64_C( 4949165778807018209), INT64_C( 3938112789424641385)),
      simde_mm512_set_epi64(INT64_C( 4056526286371624695), INT64_C(-8331979188610538469),
                            INT64_C( 3618325315514403214), INT64_C( 4352559645097175108),
                            INT64_C(-6706229050708418772), INT64_C( 3428653618190658923),
                            INT64_C( 3632118420224400502), INT64_C(-3724902649903142658)) },
    { simde_mm512_set_epi64(INT64_C( 6511295259951638559), INT64_C( 2967664075761549745),
                            INT64_C(-5270365757443319468), INT64_C( 6085475067014298512),
                            INT64_C(-5099326425442830272), INT64_C( 4071553278820425582),
                            INT64_C( 3834909065354011882), INT64_C(-1833534772634840735)),
      simde_mm512_set_epi64(INT64_C( 2429097929157506103), INT64_C(-4132910169714111449),
                            INT64_C( 5008298561239924305), INT64_C( 6505808871316705184),
                            INT64_C( 3783269911324210097), INT64_C(-1951333638813837829),
                            INT64_C( 2607682447911370790), INT64_C(-7859909190821955422)),
      simde_mm512_set_epi64(INT64_C( 4082197330794132456), INT64_C( 7100574245475661194),
                            INT64_C( 8168079755026307843), INT64_C( -420333804302406672),
                            INT64_C(-8882596336767040369), INT64_C( 6022886917634263411),
                            INT64_C( 1227226617442641092), INT64_C( 6026374418187114687)) },
    { simde_mm512_set_epi64(INT64_C(-3842867043474089582), INT64_C(-7451500434811275370),
                            INT64_C(-6998534102691290978), INT64_C( 2386416460140752654),
                            INT64_C(-1699098497489596043), INT64_C( 6221765381557968895),
                            INT64_C(-5005151901524886955), INT64_C(-5250896777164676087)),
      simde_mm512_set_epi64(INT64_C(-9169593612463882103), INT64_C(-2145526774342039513),
                            INT64_C(-6903930781003860464), INT64_C( 1929576317104796984),
                            INT64_C(-6295548163810499630), INT64_C(-1014767906663728974),
                            INT64_C( -626439061431131669), INT64_C(-1109126945600980319)),
      simde_mm512_set_epi64(INT64_C( 5326726568989792521), INT64_C(-5305973660469235857),
                            INT64_C(  -94603321687430514), INT64_C(  456840143035955670),
                            INT64_C( 4596449666320903587), INT64_C( 7236533288221697869),
                            INT64_C(-4378712840093755286), INT64_C(-4141769831563695768)) },
    { simde_mm512_set_epi64(INT64_C(-2828694771467570450), INT64_C(-6929135509057262983),
                            INT64_C(-2323076243418915183), INT64_C( 2204559204661581534),
                            INT64_C(-1964047182976242985), INT64_C(-2467474478892946929),
                            INT64_C( 7323573307633065234), INT64_C(-3421683851370085024)),
      simde_mm512_set_epi64(INT64_C(-6989907120040154555), INT64_C(-5174392049312590951),
                            INT64_C(-2100360306224715135), INT64_C( 6643254808031531461),
                            INT64_C( 6355520434769769208), INT64_C( 1392777671661840186),
                            INT64_C(-7167922563252842470), INT64_C(-6454863739370065144)),
      simde_mm512_set_epi64(INT64_C( 4161212348572584105), INT64_C(-1754743459744672032),
                            INT64_C( -222715937194200048), INT64_C(-4438695603369949927),
                            INT64_C(-8319567617746012193), INT64_C(-3860252150554787115),
                            INT64_C(-3955248202823643912), INT64_C( 3033179887999980120)) },
    { simde_mm512_set_epi64(INT64_C( 7114191547200680662), INT64_C(-2099045211461521798),
                            INT64_C( 3272048189352501706), INT64_C( 4603740714898779506),
                            INT64_C( 9083293681064881747), INT64_C( -827877718383993415),
                            INT64_C(-4347306081260333760), INT64_C( 2355314473447527349)),
      simde_mm512_set_epi64(INT64_C(-4135251864850786851), INT64_C( 6341188330562253222),
                            INT64_C( 2552742567146072902), INT64_C( 9061135799886568500),
                            INT64_C(-6225479677819013161), INT64_C( 5576315246274779916),
                            INT64_C(-1077401597827861612), INT64_C( 1778966240326933888)),
      simde_mm512_set_epi64(INT64_C(-7197300661658084103), INT64_C(-8440233542023775020),
                            INT64_C(  719305622206428804), INT64_C(-4457395084987788994),
                            INT64_C(-3137970714825656708), INT64_C(-6404192964658773331),
                            INT64_C(-3269904483432472148), INT64_C(  576348233120593461)) },
    { simde_mm512_set_epi64(INT64_C( 3613493769008402390), INT64_C( 5068929150222120868),
                            INT64_C(-4175170887983036220), INT64_C( 1446520110991419851),
                            INT64_C(-4684809742159810627), INT64_C(-8068136647202511072),
                            INT64_C(-8755946494441583475), INT64_C(-2600754454225459282)),
      simde_mm512_set_epi64(INT64_C(-4745591504270353056), INT64_C( 7929970554391524367),
                            INT64_C( 5042330899658882400), INT64_C( 8909610017904704861),
                            INT64_C( -985684106122640205), INT64_C(-7818900835071115973),
                            INT64_C(-8489220204786376713), INT64_C( 1686175505197131144)),
      simde_mm512_set_epi64(INT64_C( 8359085273278755446), INT64_C(-2861041404169403499),
                            INT64_C(-9217501787641918620), INT64_C(-7463089906913285010),
                            INT64_C(-3699125636037170422), INT64_C( -249235812131395099),
                            INT64_C( -266726289655206762), INT64_C(-4286929959422590426)) },
    { simde_mm512_set_epi64(INT64_C(-5104463934349906859), INT64_C( -943842919202133947),
                            INT64_C(-1106402919107319750), INT64_C(-6916980604540002948),
                            INT64_C( 6706488448353419699), INT64_C( 6353788720156721715),
                            INT64_C(-7297010244684735465), INT64_C( 7061321315551033545)),
      simde_mm512_set_epi64(INT64_C(   41840601428328244), INT64_C(-5245852617508367178),
                            INT64_C(  365433634193623141), INT64_C( 8770670771023648065),
                            INT64_C(-1716705465228018899), INT64_C(-3002351653588715385),
                            INT64_C(-5553542352014646723), INT64_C(  416399443242670442)),
      simde_mm512_set_epi64(INT64_C(-5146304535778235103), INT64_C( 4302009698306233231),
                            INT64_C(-1471836553300942891), INT64_C( 2759092698145900603),
                            INT64_C( 8423193913581438598), INT64_C(-9090603699964114516),
                            INT64_C(-1743467892670088742), INT64_C( 6644921872308363103)) },
    { simde_mm512_set_epi64(INT64_C(-6330549896013078208), INT64_C( 4384343771802742742),
                            INT64_C(-2932124200533978748), INT64_C( 7186143354591613127),
                            INT64_C( 8884120384944776355), INT64_C( 3734874057999449248),
                            INT64_C(-6611328408496753520), INT64_C( -519645792221266563)),
      simde_mm512_set_epi64(INT64_C( 5961700889234495899), INT64_C(-7467194643704326669),
                            INT64_C(-8092959359289136961), INT64_C(-5796384256596801976),
                            INT64_C( 5040176301556389633), INT64_C( 5087444127355189153),
                            INT64_C( -520787949405881850), INT64_C( 4166312467639075350)),
      simde_mm512_set_epi64(INT64_C( 6154493288461977509), INT64_C(-6595205658202482205),
                            INT64_C( 5160835158755158213), INT64_C(-5464216462521136513),
                            INT64_C( 3843944083388386722), INT64_C(-1352570069355739905),
                            INT64_C(-6090540459090871670), INT64_C(-4685958259860341913)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m512i r = simde_mm512_sub_epi64(test_vec[i].a, test_vec[i].b);
    simde_assert_m512i_i64(r, ==, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm512_sub_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m512 a;
    simde__m512 b;
    simde__m512 r;
  } test_vec[8] = {
    { simde_mm512_set_ps(SIMDE_FLOAT32_C(  -659.63), SIMDE_FLOAT32_C(  -759.67), SIMDE_FLOAT32_C(  -847.92), SIMDE_FLOAT32_C(   -61.45),
                         SIMDE_FLOAT32_C(  -337.36), SIMDE_FLOAT32_C(   139.68), SIMDE_FLOAT32_C(   658.69), SIMDE_FLOAT32_C(    86.55),
                         SIMDE_FLOAT32_C(  -150.13), SIMDE_FLOAT32_C(   450.66), SIMDE_FLOAT32_C(  -527.30), SIMDE_FLOAT32_C(  -641.78),
                         SIMDE_FLOAT32_C(   929.20), SIMDE_FLOAT32_C(  -281.32), SIMDE_FLOAT32_C(  -125.47), SIMDE_FLOAT32_C(  -963.36)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(  -406.77), SIMDE_FLOAT32_C(  -929.18), SIMDE_FLOAT32_C(   716.57), SIMDE_FLOAT32_C(     1.83),
                         SIMDE_FLOAT32_C(   179.14), SIMDE_FLOAT32_C(   145.16), SIMDE_FLOAT32_C(  -463.41), SIMDE_FLOAT32_C(  -573.03),
                         SIMDE_FLOAT32_C(    33.04), SIMDE_FLOAT32_C(   167.46), SIMDE_FLOAT32_C(  -891.13), SIMDE_FLOAT32_C(   473.74),
                         SIMDE_FLOAT32_C(  -547.95), SIMDE_FLOAT32_C(   516.90), SIMDE_FLOAT32_C(   -69.62), SIMDE_FLOAT32_C(  -976.88)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(  -252.86), SIMDE_FLOAT32_C(   169.51), SIMDE_FLOAT32_C( -1564.49), SIMDE_FLOAT32_C(   -63.28),
                         SIMDE_FLOAT32_C(  -516.50), SIMDE_FLOAT32_C(    -5.48), SIMDE_FLOAT32_C(  1122.10), SIMDE_FLOAT32_C(   659.58),
                         SIMDE_FLOAT32_C(  -183.17), SIMDE_FLOAT32_C(   283.20), SIMDE_FLOAT32_C(   363.83), SIMDE_FLOAT32_C( -1115.52),
                         SIMDE_FLOAT32_C(  1477.15), SIMDE_FLOAT32_C(  -798.22), SIMDE_FLOAT32_C(   -55.85), SIMDE_FLOAT32_C(    13.52)) },
    { simde_mm512_set_ps(SIMDE_FLOAT32_C(  -311.95), SIMDE_FLOAT32_C(  -956.32), SIMDE_FLOAT32_C(   248.48), SIMDE_FLOAT32_C(   995.45),
                         SIMDE_FLOAT32_C(   139.87), SIMDE_FLOAT32_C(   783.05), SIMDE_FLOAT32_C(   584.21), SIMDE_FLOAT32_C(  -920.08),
                         SIMDE_FLOAT32_C(  -210.14), SIMDE_FLOAT32_C(   816.06), SIMDE_FLOAT32_C(  -193.68), SIMDE_FLOAT32_C(   585.03),
                         SIMDE_FLOAT32_C(  -674.08), SIMDE_FLOAT32_C(   157.57), SIMDE_FLOAT32_C(  -919.13), SIMDE_FLOAT32_C(   451.36)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(  -736.64), SIMDE_FLOAT32_C(   551.91), SIMDE_FLOAT32_C(  -457.00), SIMDE_FLOAT32_C(  -294.64),
                         SIMDE_FLOAT32_C(  -589.82), SIMDE_FLOAT32_C(   788.44), SIMDE_FLOAT32_C(  -717.27), SIMDE_FLOAT32_C(   147.83),
                         SIMDE_FLOAT32_C(  -294.04), SIMDE_FLOAT32_C(  -678.25), SIMDE_FLOAT32_C(   428.59), SIMDE_FLOAT32_C(  -340.21),
                         SIMDE_FLOAT32_C(   447.13), SIMDE_FLOAT32_C(  -558.56), SIMDE_FLOAT32_C(  -584.22), SIMDE_FLOAT32_C(   801.21)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(   424.69), SIMDE_FLOAT32_C( -1508.23), SIMDE_FLOAT32_C(   705.48), SIMDE_FLOAT32_C(  1290.09),
                         SIMDE_FLOAT32_C(   729.69), SIMDE_FLOAT32_C(    -5.39), SIMDE_FLOAT32_C(  1301.48), SIMDE_FLOAT32_C( -1067.91),
                         SIMDE_FLOAT32_C(    83.90), SIMDE_FLOAT32_C(  1494.31), SIMDE_FLOAT32_C(  -622.27), SIMDE_FLOAT32_C(   925.24),
                         SIMDE_FLOAT32_C( -1121.21), SIMDE_FLOAT32_C(   716.13), SIMDE_FLOAT32_C(  -334.91), SIMDE_FLOAT32_C(  -349.85)) },
    { simde_mm512_set_ps(SIMDE_FLOAT32_C(  -668.75), SIMDE_FLOAT32_C(  -693.34), SIMDE_FLOAT32_C(    34.22), SIMDE_FLOAT32_C(   781.55),
                         SIMDE_FLOAT32_C(   732.13), SIMDE_FLOAT32_C(  -735.61), SIMDE_FLOAT32_C(  -765.87), SIMDE_FLOAT32_C(  -276.25),
                         SIMDE_FLOAT32_C(   583.37), SIMDE_FLOAT32_C(   151.60), SIMDE_FLOAT32_C(  -526.34), SIMDE_FLOAT32_C(  -118.48),
                         SIMDE_FLOAT32_C(  -603.65), SIMDE_FLOAT32_C(   -96.99), SIMDE_FLOAT32_C(  -634.86), SIMDE_FLOAT32_C(   225.44)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(     5.83), SIMDE_FLOAT32_C(   767.38), SIMDE_FLOAT32_C(   251.47), SIMDE_FLOAT32_C(  -790.79),
                         SIMDE_FLOAT32_C(   317.44), SIMDE_FLOAT32_C(   889.98), SIMDE_FLOAT32_C(   932.08), SIMDE_FLOAT32_C(   879.75),
                         SIMDE_FLOAT32_C(   583.36), SIMDE_FLOAT32_C(   192.11), SIMDE_FLOAT32_C(   241.22), SIMDE_FLOAT32_C(  -741.26),
                         SIMDE_FLOAT32_C(   815.78), SIMDE_FLOAT32_C(  -325.43), SIMDE_FLOAT32_C(   457.34), SIMDE_FLOAT32_C(   430.70)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(  -674.58), SIMDE_FLOAT32_C( -1460.72), SIMDE_FLOAT32_C(  -217.25), SIMDE_FLOAT32_C(  1572.34),
                         SIMDE_FLOAT32_C(   414.69), SIMDE_FLOAT32_C( -1625.59), SIMDE_FLOAT32_C( -1697.95), SIMDE_FLOAT32_C( -1156.00),
                         SIMDE_FLOAT32_C(     0.01), SIMDE_FLOAT32_C(   -40.51), SIMDE_FLOAT32_C(  -767.56), SIMDE_FLOAT32_C(   622.78),
                         SIMDE_FLOAT32_C( -1419.43), SIMDE_FLOAT32_C(   228.44), SIMDE_FLOAT32_C( -1092.20), SIMDE_FLOAT32_C(  -205.26)) },
    { simde_mm512_set_ps(SIMDE_FLOAT32_C(  -679.43), SIMDE_FLOAT32_C(   282.17), SIMDE_FLOAT32_C(   993.32), SIMDE_FLOAT32_C(   821.29),
                         SIMDE_FLOAT32_C(   165.53), SIMDE_FLOAT32_C(   519.53), SIMDE_FLOAT32_C(   873.49), SIMDE_FLOAT32_C(   728.89),
                         SIMDE_FLOAT32_C(   317.74), SIMDE_FLOAT32_C(   -77.37), SIMDE_FLOAT32_C(   975.52), SIMDE_FLOAT32_C(   188.84),
                         SIMDE_FLOAT32_C(  -557.86), SIMDE_FLOAT32_C(   759.72), SIMDE_FLOAT32_C(  -874.99), SIMDE_FLOAT32_C(    10.90)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(   242.15), SIMDE_FLOAT32_C(   438.99), SIMDE_FLOAT32_C(   772.28), SIMDE_FLOAT32_C(  -279.74),
                         SIMDE_FLOAT32_C(  -310.93), SIMDE_FLOAT32_C(  -848.99), SIMDE_FLOAT32_C(   222.85), SIMDE_FLOAT32_C(   300.16),
                         SIMDE_FLOAT32_C(   693.31), SIMDE_FLOAT32_C(   248.74), SIMDE_FLOAT32_C(   748.13), SIMDE_FLOAT32_C(  -760.98),
                         SIMDE_FLOAT32_C(   787.06), SIMDE_FLOAT32_C(   732.48), SIMDE_FLOAT32_C(  -205.98), SIMDE_FLOAT32_C(   629.02)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(  -921.58), SIMDE_FLOAT32_C(  -156.82), SIMDE_FLOAT32_C(   221.04), SIMDE_FLOAT32_C(  1101.03),
                         SIMDE_FLOAT32_C(   476.46), SIMDE_FLOAT32_C(  1368.52), SIMDE_FLOAT32_C(   650.64), SIMDE_FLOAT32_C(   428.73),
                         SIMDE_FLOAT32_C(  -375.57), SIMDE_FLOAT32_C(  -326.11), SIMDE_FLOAT32_C(   227.39), SIMDE_FLOAT32_C(   949.82),
                         SIMDE_FLOAT32_C( -1344.92), SIMDE_FLOAT32_C(    27.24), SIMDE_FLOAT32_C(  -669.01), SIMDE_FLOAT32_C(  -618.12)) },
    { simde_mm512_set_ps(SIMDE_FLOAT32_C(   271.85), SIMDE_FLOAT32_C(    70.43), SIMDE_FLOAT32_C(   982.50), SIMDE_FLOAT32_C(    45.42),
                         SIMDE_FLOAT32_C(   118.63), SIMDE_FLOAT32_C(  -985.91), SIMDE_FLOAT32_C(     8.06), SIMDE_FLOAT32_C(   547.65),
                         SIMDE_FLOAT32_C(  -976.69), SIMDE_FLOAT32_C(  -286.32), SIMDE_FLOAT32_C(   986.84), SIMDE_FLOAT32_C(   730.82),
                         SIMDE_FLOAT32_C(  -481.07), SIMDE_FLOAT32_C(   923.92), SIMDE_FLOAT32_C(   879.55), SIMDE_FLOAT32_C(   720.13)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(   551.66), SIMDE_FLOAT32_C(  -312.49), SIMDE_FLOAT32_C(  -723.23), SIMDE_FLOAT32_C(   -17.59),
                         SIMDE_FLOAT32_C(   325.03), SIMDE_FLOAT32_C(  -395.41), SIMDE_FLOAT32_C(   883.19), SIMDE_FLOAT32_C(  -807.12),
                         SIMDE_FLOAT32_C(  -228.68), SIMDE_FLOAT32_C(   772.42), SIMDE_FLOAT32_C(  -645.24), SIMDE_FLOAT32_C(  -500.86),
                         SIMDE_FLOAT32_C(   -15.19), SIMDE_FLOAT32_C(   910.24), SIMDE_FLOAT32_C(   528.66), SIMDE_FLOAT32_C(  -744.64)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(  -279.81), SIMDE_FLOAT32_C(   382.92), SIMDE_FLOAT32_C(  1705.73), SIMDE_FLOAT32_C(    63.01),
                         SIMDE_FLOAT32_C(  -206.40), SIMDE_FLOAT32_C(  -590.50), SIMDE_FLOAT32_C(  -875.13), SIMDE_FLOAT32_C(  1354.77),
                         SIMDE_FLOAT32_C(  -748.01), SIMDE_FLOAT32_C( -1058.74), SIMDE_FLOAT32_C(  1632.08), SIMDE_FLOAT32_C(  1231.68),
                         SIMDE_FLOAT32_C(  -465.88), SIMDE_FLOAT32_C(    13.68), SIMDE_FLOAT32_C(   350.89), SIMDE_FLOAT32_C(  1464.77)) },
    { simde_mm512_set_ps(SIMDE_FLOAT32_C(    84.80), SIMDE_FLOAT32_C(  -329.58), SIMDE_FLOAT32_C(   766.75), SIMDE_FLOAT32_C(  -652.57),
                         SIMDE_FLOAT32_C(  -735.85), SIMDE_FLOAT32_C(   809.23), SIMDE_FLOAT32_C(   200.31), SIMDE_FLOAT32_C(  -623.13),
                         SIMDE_FLOAT32_C(  -845.05), SIMDE_FLOAT32_C(   364.16), SIMDE_FLOAT32_C(   572.02), SIMDE_FLOAT32_C(     0.80),
                         SIMDE_FLOAT32_C(  -325.98), SIMDE_FLOAT32_C(  -311.07), SIMDE_FLOAT32_C(   800.65), SIMDE_FLOAT32_C(  -125.96)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(   485.48), SIMDE_FLOAT32_C(  -140.23), SIMDE_FLOAT32_C(  -453.31), SIMDE_FLOAT32_C(   -34.02),
                         SIMDE_FLOAT32_C(   893.13), SIMDE_FLOAT32_C(   152.27), SIMDE_FLOAT32_C(    79.60), SIMDE_FLOAT32_C(  -817.18),
                         SIMDE_FLOAT32_C(  -608.22), SIMDE_FLOAT32_C(  -450.43), SIMDE_FLOAT32_C(   547.33), SIMDE_FLOAT32_C(  -843.17),
                         SIMDE_FLOAT32_C(   492.07), SIMDE_FLOAT32_C(   125.25), SIMDE_FLOAT32_C(    50.68), SIMDE_FLOAT32_C(   718.03)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(  -400.68), SIMDE_FLOAT32_C(  -189.35), SIMDE_FLOAT32_C(  1220.06), SIMDE_FLOAT32_C(  -618.55),
                         SIMDE_FLOAT32_C( -1628.98), SIMDE_FLOAT32_C(   656.96), SIMDE_FLOAT32_C(   120.71), SIMDE_FLOAT32_C(   194.05),
                         SIMDE_FLOAT32_C(  -236.83), SIMDE_FLOAT32_C(   814.59), SIMDE_FLOAT32_C(    24.69), SIMDE_FLOAT32_C(   843.97),
                         SIMDE_FLOAT32_C(  -818.05), SIMDE_FLOAT32_C(  -436.32), SIMDE_FLOAT32_C(   749.97), SIMDE_FLOAT32_C(  -843.99)) },
    { simde_mm512_set_ps(SIMDE_FLOAT32_C(  -677.15), SIMDE_FLOAT32_C(   104.38), SIMDE_FLOAT32_C(  -475.85), SIMDE_FLOAT32_C(   787.23),
                         SIMDE_FLOAT32_C(   133.69), SIMDE_FLOAT32_C(  -960.64), SIMDE_FLOAT32_C(   242.81), SIMDE_FLOAT32_C(  -225.39),
                         SIMDE_FLOAT32_C(   314.69), SIMDE_FLOAT32_C(   228.04), SIMDE_FLOAT32_C(  -592.56), SIMDE_FLOAT32_C(   407.24),
                         SIMDE_FLOAT32_C(  -825.26), SIMDE_FLOAT32_C(  -290.43), SIMDE_FLOAT32_C(   962.34), SIMDE_FLOAT32_C(   893.07)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(  -995.46), SIMDE_FLOAT32_C(   431.24), SIMDE_FLOAT32_C(  -960.38), SIMDE_FLOAT32_C(   -49.08),
                         SIMDE_FLOAT32_C(   813.87), SIMDE_FLOAT32_C(   674.48), SIMDE_FLOAT32_C(   397.88), SIMDE_FLOAT32_C(  -954.85),
                         SIMDE_FLOAT32_C(   446.57), SIMDE_FLOAT32_C(   897.67), SIMDE_FLOAT32_C(   880.04), SIMDE_FLOAT32_C(   250.06),
                         SIMDE_FLOAT32_C(  -272.88), SIMDE_FLOAT32_C(  -311.12), SIMDE_FLOAT32_C(   208.86), SIMDE_FLOAT32_C(  -234.41)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(   318.31), SIMDE_FLOAT32_C(  -326.86), SIMDE_FLOAT32_C(   484.53), SIMDE_FLOAT32_C(   836.31),
                         SIMDE_FLOAT32_C(  -680.18), SIMDE_FLOAT32_C( -1635.12), SIMDE_FLOAT32_C(  -155.07), SIMDE_FLOAT32_C(   729.46),
                         SIMDE_FLOAT32_C(  -131.88), SIMDE_FLOAT32_C(  -669.63), SIMDE_FLOAT32_C( -1472.60), SIMDE_FLOAT32_C(   157.18),
                         SIMDE_FLOAT32_C(  -552.38), SIMDE_FLOAT32_C(    20.69), SIMDE_FLOAT32_C(   753.48), SIMDE_FLOAT32_C(  1127.48)) },
    { simde_mm512_set_ps(SIMDE_FLOAT32_C(  -375.37), SIMDE_FLOAT32_C(   635.19), SIMDE_FLOAT32_C(  -375.80), SIMDE_FLOAT32_C(   342.82),
                         SIMDE_FLOAT32_C(  -159.29), SIMDE_FLOAT32_C(   450.42), SIMDE_FLOAT32_C(    65.30), SIMDE_FLOAT32_C(     7.10),
                         SIMDE_FLOAT32_C(  -943.32), SIMDE_FLOAT32_C(  -222.67), SIMDE_FLOAT32_C(  -766.83), SIMDE_FLOAT32_C(   277.09),
                         SIMDE_FLOAT32_C(    50.31), SIMDE_FLOAT32_C(   780.30), SIMDE_FLOAT32_C(  -514.83), SIMDE_FLOAT32_C(   450.20)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(  -353.63), SIMDE_FLOAT32_C(   190.41), SIMDE_FLOAT32_C(   122.56), SIMDE_FLOAT32_C(   371.55),
                         SIMDE_FLOAT32_C(  -453.54), SIMDE_FLOAT32_C(  -448.42), SIMDE_FLOAT32_C(   943.54), SIMDE_FLOAT32_C(  -548.29),
                         SIMDE_FLOAT32_C(   313.64), SIMDE_FLOAT32_C(  -524.65), SIMDE_FLOAT32_C(   682.10), SIMDE_FLOAT32_C(  -220.88),
                         SIMDE_FLOAT32_C(   -36.78), SIMDE_FLOAT32_C(  -595.06), SIMDE_FLOAT32_C(   283.20), SIMDE_FLOAT32_C(   943.66)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(   -21.74), SIMDE_FLOAT32_C(   444.78), SIMDE_FLOAT32_C(  -498.36), SIMDE_FLOAT32_C(   -28.73),
                         SIMDE_FLOAT32_C(   294.25), SIMDE_FLOAT32_C(   898.84), SIMDE_FLOAT32_C(  -878.24), SIMDE_FLOAT32_C(   555.39),
                         SIMDE_FLOAT32_C( -1256.96), SIMDE_FLOAT32_C(   301.98), SIMDE_FLOAT32_C( -1448.93), SIMDE_FLOAT32_C(   497.97),
                         SIMDE_FLOAT32_C(    87.09), SIMDE_FLOAT32_C(  1375.36), SIMDE_FLOAT32_C(  -798.03), SIMDE_FLOAT32_C(  -493.46)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m512 r = simde_mm512_sub_ps(test_vec[i].a, test_vec[i].b);
    simde_assert_m512_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm512_sub_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m512d a;
    simde__m512d b;
    simde__m512d r;
  } test_vec[8] = {
    { simde_mm512_set_pd(SIMDE_FLOAT64_C( -150.13), SIMDE_FLOAT64_C(  450.66),
                         SIMDE_FLOAT64_C( -527.30), SIMDE_FLOAT64_C( -641.78),
                         SIMDE_FLOAT64_C(  929.20), SIMDE_FLOAT64_C( -281.32),
                         SIMDE_FLOAT64_C( -125.47), SIMDE_FLOAT64_C( -963.36)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(   33.04), SIMDE_FLOAT64_C(  167.46),
                         SIMDE_FLOAT64_C( -891.13), SIMDE_FLOAT64_C(  473.74),
                         SIMDE_FLOAT64_C( -547.95), SIMDE_FLOAT64_C(  516.90),
                         SIMDE_FLOAT64_C(  -69.62), SIMDE_FLOAT64_C( -976.88)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C( -183.17), SIMDE_FLOAT64_C(  283.20),
                         SIMDE_FLOAT64_C(  363.83), SIMDE_FLOAT64_C(-1115.52),
                         SIMDE_FLOAT64_C( 1477.15), SIMDE_FLOAT64_C( -798.22),
                         SIMDE_FLOAT64_C(  -55.85), SIMDE_FLOAT64_C(   13.52)) },
    { simde_mm512_set_pd(SIMDE_FLOAT64_C( -659.63), SIMDE_FLOAT64_C( -759.67),
                         SIMDE_FLOAT64_C( -847.92), SIMDE_FLOAT64_C(  -61.45),
                         SIMDE_FLOAT64_C( -337.36), SIMDE_FLOAT64_C(  139.68),
                         SIMDE_FLOAT64_C(  658.69), SIMDE_FLOAT64_C(   86.55)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C( -406.77), SIMDE_FLOAT64_C( -929.18),
                         SIMDE_FLOAT64_C(  716.57), SIMDE_FLOAT64_C(    1.83),
                         SIMDE_FLOAT64_C(  179.14), SIMDE_FLOAT64_C(  145.16),
                         SIMDE_FLOAT64_C( -463.41), SIMDE_FLOAT64_C( -573.03)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C( -252.86), SIMDE_FLOAT64_C(  169.51),
                         SIMDE_FLOAT64_C(-1564.49), SIMDE_FLOAT64_C(  -63.28),
                         SIMDE_FLOAT64_C( -516.50), SIMDE_FLOAT64_C(   -5.48),
                         SIMDE_FLOAT64_C( 1122.10), SIMDE_FLOAT64_C(  659.58)) },
    { simde_mm512_set_pd(SIMDE_FLOAT64_C( -210.14), SIMDE_FLOAT64_C(  816.06),
                         SIMDE_FLOAT64_C( -193.68), SIMDE_FLOAT64_C(  585.03),
                         SIMDE_FLOAT64_C( -674.08), SIMDE_FLOAT64_C(  157.57),
                         SIMDE_FLOAT64_C( -919.13), SIMDE_FLOAT64_C(  451.36)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C( -294.04), SIMDE_FLOAT64_C( -678.25),
                         SIMDE_FLOAT64_C(  428.59), SIMDE_FLOAT64_C( -340.21),
                         SIMDE_FLOAT64_C(  447.13), SIMDE_FLOAT64_C( -558.56),
                         SIMDE_FLOAT64_C( -584.22), SIMDE_FLOAT64_C(  801.21)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(   83.90), SIMDE_FLOAT64_C( 1494.31),
                         SIMDE_FLOAT64_C( -622.27), SIMDE_FLOAT64_C(  925.24),
                         SIMDE_FLOAT64_C(-1121.21), SIMDE_FLOAT64_C(  716.13),
                         SIMDE_FLOAT64_C( -334.91), SIMDE_FLOAT64_C( -349.85)) },
    { simde_mm512_set_pd(SIMDE_FLOAT64_C( -311.95), SIMDE_FLOAT64_C( -956.32),
                         SIMDE_FLOAT64_C(  248.48), SIMDE_FLOAT64_C(  995.45),
                         SIMDE_FLOAT64_C(  139.87), SIMDE_FLOAT64_C(  783.05),
                         SIMDE_FLOAT64_C(  584.21), SIMDE_FLOAT64_C( -920.08)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C( -736.64), SIMDE_FLOAT64_C(  551.91),
                         SIMDE_FLOAT64_C( -457.00), SIMDE_FLOAT64_C( -294.64),
                         SIMDE_FLOAT64_C( -589.82), SIMDE_FLOAT64_C(  788.44),
                         SIMDE_FLOAT64_C( -717.27), SIMDE_FLOAT64_C(  147.83)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(  424.69), SIMDE_FLOAT64_C(-1508.23),
                         SIMDE_FLOAT64_C(  705.48), SIMDE_FLOAT64_C( 1290.09),
                         SIMDE_FLOAT64_C(  729.69), SIMDE_FLOAT64_C(   -5.39),
                         SIMDE_FLOAT64_C( 1301.48), SIMDE_FLOAT64_C(-1067.91)) },
    { simde_mm512_set_pd(SIMDE_FLOAT64_C(  583.37), SIMDE_FLOAT64_C(  151.60),
                         SIMDE_FLOAT64_C( -526.34), SIMDE_FLOAT64_C( -118.48),
                         SIMDE_FLOAT64_C( -603.65), SIMDE_FLOAT64_C(  -96.99),
                         SIMDE_FLOAT64_C( -634.86), SIMDE_FLOAT64_C(  225.44)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(  583.36), SIMDE_FLOAT64_C(  192.11),
                         SIMDE_FLOAT64_C(  241.22), SIMDE_FLOAT64_C( -741.26),
                         SIMDE_FLOAT64_C(  815.78), SIMDE_FLOAT64_C( -325.43),
                         SIMDE_FLOAT64_C(  457.34), SIMDE_FLOAT64_C(  430.70)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(    0.01), SIMDE_FLOAT64_C(  -40.51),
                         SIMDE_FLOAT64_C( -767.56), SIMDE_FLOAT64_C(  622.78),
                         SIMDE_FLOAT64_C(-1419.43), SIMDE_FLOAT64_C(  228.44),
                         SIMDE_FLOAT64_C(-1092.20), SIMDE_FLOAT64_C( -205.26)) },
    { simde_mm512_set_pd(SIMDE_FLOAT64_C( -668.75), SIMDE_FLOAT64_C( -693.34),
                         SIMDE_FLOAT64_C(   34.22), SIMDE_FLOAT64_C(  781.55),
                         SIMDE_FLOAT64_C(  732.13), SIMDE_FLOAT64_C( -735.61),
                         SIMDE_FLOAT64_C( -765.87), SIMDE_FLOAT64_C( -276.25)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(    5.83), SIMDE_FLOAT64_C(  767.38),
                         SIMDE_FLOAT64_C(  251.47), SIMDE_FLOAT64_C( -790.79),
                         SIMDE_FLOAT64_C(  317.44), SIMDE_FLOAT64_C(  889.98),
                         SIMDE_FLOAT64_C(  932.08), SIMDE_FLOAT64_C(  879.75)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C( -674.58), SIMDE_FLOAT64_C(-1460.72),
                         SIMDE_FLOAT64_C( -217.25), SIMDE_FLOAT64_C( 1572.34),
                         SIMDE_FLOAT64_C(  414.69), SIMDE_FLOAT64_C(-1625.59),
                         SIMDE_FLOAT64_C(-1697.95), SIMDE_FLOAT64_C(-1156.00)) },
    { simde_mm512_set_pd(SIMDE_FLOAT64_C(  317.74), SIMDE_FLOAT64_C(  -77.37),
                         SIMDE_FLOAT64_C(  975.52), SIMDE_FLOAT64_C(  188.84),
                         SIMDE_FLOAT64_C( -557.86), SIMDE_FLOAT64_C(  759.72),
                         SIMDE_FLOAT64_C( -874.99), SIMDE_FLOAT64_C(   10.90)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(  693.31), SIMDE_FLOAT64_C(  248.74),
                         SIMDE_FLOAT64_C(  748.13), SIMDE_FLOAT64_C( -760.98),
                         SIMDE_FLOAT64_C(  787.06), SIMDE_FLOAT64_C(  732.48),
                         SIMDE_FLOAT64_C( -205.98), SIMDE_FLOAT64_C(  629.02)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C( -375.57), SIMDE_FLOAT64_C( -326.11),
                         SIMDE_FLOAT64_C(  227.39), SIMDE_FLOAT64_C(  949.82),
                         SIMDE_FLOAT64_C(-1344.92), SIMDE_FLOAT64_C(   27.24),
                         SIMDE_FLOAT64_C( -669.01), SIMDE_FLOAT64_C( -618.12)) },
    { simde_mm512_set_pd(SIMDE_FLOAT64_C( -679.43), SIMDE_FLOAT64_C(  282.17),
                         SIMDE_FLOAT64_C(  993.32), SIMDE_FLOAT64_C(  821.29),
                         SIMDE_FLOAT64_C(  165.53), SIMDE_FLOAT64_C(  519.53),
                         SIMDE_FLOAT64_C(  873.49), SIMDE_FLOAT64_C(  728.89)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(  242.15), SIMDE_FLOAT64_C(  438.99),
                         SIMDE_FLOAT64_C(  772.28), SIMDE_FLOAT64_C( -279.74),
                         SIMDE_FLOAT64_C( -310.93), SIMDE_FLOAT64_C( -848.99),
                         SIMDE_FLOAT64_C(  222.85), SIMDE_FLOAT64_C(  300.16)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C( -921.58), SIMDE_FLOAT64_C( -156.82),
                         SIMDE_FLOAT64_C(  221.04), SIMDE_FLOAT64_C( 1101.03),
                         SIMDE_FLOAT64_C(  476.46), SIMDE_FLOAT64_C( 1368.52),
                         SIMDE_FLOAT64_C(  650.64), SIMDE_FLOAT64_C(  428.73)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m512d r = simde_mm512_sub_pd(test_vec[i].a, test_vec[i].b);
    simde_assert_m512d_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm512_mask_sub_epi32(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m512i src;
    simde__mmask16 k;
    simde__m512i a;
    simde__m512i b;
    simde__m512i r;
  } test_vec[8] = {
    { simde_mm512_set_epi32(INT32_C( -957186609), INT32_C(-1524765283), INT32_C( 1290068568), INT32_C( 1887468775),
                            INT32_C( -904096999), INT32_C(-1189693212), INT32_C(  221355870), INT32_C(-1952779315),
                            INT32_C( 1347985035), INT32_C(-2063939133), INT32_C(-1602582649), INT32_C(-2096850611),
                            INT32_C(-2084994527), INT32_C(  -75386963), INT32_C( 1835417512), INT32_C(-2072964471)),
      UINT16_C(35396),
      simde_mm512_set_epi32(INT32_C(  136551409), INT32_C( 1192962314), INT32_C( 2058621765), INT32_C(-2039270859),
                            INT32_C(  -26254502), INT32_C(  733381108), INT32_C( -187934344), INT32_C(  989979336),
                            INT32_C(-1964919382), INT32_C(  126554293), INT32_C(  254011928), INT32_C( 1490517506),
                            INT32_C(-1065486850), INT32_C(   45941921), INT32_C(-1082899768), INT32_C( -219628031)),
      simde_mm512_set_epi32(INT32_C( -680185335), INT32_C(  111102276), INT32_C( 1222454066), INT32_C( -422241261),
                            INT32_C(  -78061198), INT32_C(-2084414007), INT32_C( 1367041146), INT32_C(-1471398421),
                            INT32_C( -348147705), INT32_C(  673564238), INT32_C(-1457376577), INT32_C(  613875036),
                            INT32_C( -859069431), INT32_C( -733638834), INT32_C(-1673403701), INT32_C(  842474288)),
      simde_mm512_set_epi32(INT32_C(  816736744), INT32_C(-1524765283), INT32_C( 1290068568), INT32_C( 1887468775),
                            INT32_C(   51806696), INT32_C(-1189693212), INT32_C(-1554975490), INT32_C(-1952779315),
                            INT32_C( 1347985035), INT32_C( -547009945), INT32_C(-1602582649), INT32_C(-2096850611),
                            INT32_C(-2084994527), INT32_C(  779580755), INT32_C( 1835417512), INT32_C(-2072964471)) },
    { simde_mm512_set_epi32(INT32_C( 2077489237), INT32_C(-2066152618), INT32_C( -825076901), INT32_C(-1372574642),
                            INT32_C( -889460158), INT32_C(  498921453), INT32_C(  943332338), INT32_C(-1383811831),
                            INT32_C( 1827152592), INT32_C( 1728034912), INT32_C( 1350913629), INT32_C(  868578809),
                            INT32_C( 1368636899), INT32_C( -389235219), INT32_C(  602990700), INT32_C( -400551366)),
      UINT16_C(47779),
      simde_mm512_set_epi32(INT32_C( 1704357216), INT32_C( -538157327), INT32_C( 1370875608), INT32_C( 1508504457),
                            INT32_C(  -68294915), INT32_C(-1479685367), INT32_C( -615597542), INT32_C(-1638887359),
                            INT32_C(-1417912572), INT32_C( 1479002949), INT32_C( -647118153), INT32_C( 1670566025),
                            INT32_C(-1880268561), INT32_C(-1083232065), INT32_C( 2092339698), INT32_C(-1021873283)),
      simde_mm512_set_epi32(INT32_C( -839277498), INT32_C(  551588590), INT32_C( 1834572496), INT32_C( 1613035598),
                            INT32_C(-1678404828), INT32_C(-1769391216), INT32_C(-1638931514), INT32_C(  156804649),
                            INT32_C( 1764158657), INT32_C( -132604621), INT32_C(  446542816), INT32_C( 2037189710),
                            INT32_C(  109296986), INT32_C(  257019297), INT32_C(  473079611), INT32_C( 1127076998)),
      simde_mm512_set_epi32(INT32_C(-1751332582), INT32_C(-2066152618), INT32_C( -463696888), INT32_C( -104531141),
                            INT32_C( 1610109913), INT32_C(  498921453), INT32_C( 1023333972), INT32_C(-1383811831),
                            INT32_C( 1112896067), INT32_C( 1728034912), INT32_C(-1093660969), INT32_C(  868578809),
                            INT32_C( 1368636899), INT32_C( -389235219), INT32_C( 1619260087), INT32_C( 2146017015)) },
    { simde_mm512_set_epi32(INT32_C(  307630641), INT32_C(-1560148595), INT32_C(  376284729), INT32_C(  278591183),
                            INT32_C( -277186219), INT32_C( 1940926671), INT32_C(  662058232), INT32_C( 1091202812),
                            INT32_C( -701136301), INT32_C( -504607320), INT32_C( -251380880), INT32_C( 1860616049),
                            INT32_C(-1752161866), INT32_C(-1199997313), INT32_C(-1668691262), INT32_C( 1717921298)),
      UINT16_C( 2459),
      simde_mm512_set_epi32(INT32_C( 2079917891), INT32_C(-1199015072), INT32_C(  -98602729), INT32_C( -930567988),
                            INT32_C(-1256209763), INT32_C( 1068967165), INT32_C( 1289079409), INT32_C( 1251085533),
                            INT32_C( -727360546), INT32_C(-1724797341), INT32_C( 2093813635), INT32_C( 1051617285),
                            INT32_C( 1264716001), INT32_C(  940727836), INT32_C( 1722577424), INT32_C(-1275657732)),
      simde_mm512_set_epi32(INT32_C(  671797033), INT32_C(-1012795446), INT32_C( 2106088193), INT32_C( -458612579),
                            INT32_C( -261772865), INT32_C( -550994046), INT32_C( 2105186719), INT32_C( 1074097751),
                            INT32_C(-1251411324), INT32_C(   65867416), INT32_C(-1495248139), INT32_C(  315553116),
                            INT32_C(-1869712369), INT32_C(-1246794510), INT32_C( 1218370652), INT32_C( -240388126)),
      simde_mm512_set_epi32(INT32_C(  307630641), INT32_C(-1560148595), INT32_C(  376284729), INT32_C(  278591183),
                            INT32_C( -994436898), INT32_C( 1940926671), INT32_C(  662058232), INT32_C(  176987782),
                            INT32_C(  524050778), INT32_C( -504607320), INT32_C( -251380880), INT32_C(  736064169),
                            INT32_C(-1160538926), INT32_C(-1199997313), INT32_C(  504206772), INT32_C(-1035269606)) },
    { simde_mm512_set_epi32(INT32_C( -789716549), INT32_C(-1932674309), INT32_C(  548470804), INT32_C( -318652401),
                            INT32_C(-2041118423), INT32_C(-2107945718), INT32_C( -715661009), INT32_C( 1609073505),
                            INT32_C( 1214609500), INT32_C(  283085327), INT32_C(-1633515677), INT32_C( 1697029857),
                            INT32_C( 1976447422), INT32_C(  904412076), INT32_C( 1198927422), INT32_C(-1498026761)),
      UINT16_C(54315),
      simde_mm512_set_epi32(INT32_C( 1385182319), INT32_C(  795273310), INT32_C( 1955628796), INT32_C( -526907127),
                            INT32_C(-2141025282), INT32_C( -931446405), INT32_C(-1422139726), INT32_C(-1101084337),
                            INT32_C( -254080461), INT32_C( -595291883), INT32_C( 1292692652), INT32_C(-1849951866),
                            INT32_C( -815091127), INT32_C(  370112774), INT32_C( -520479179), INT32_C( 1681391452)),
      simde_mm512_set_epi32(INT32_C(-1825216267), INT32_C( 1555513845), INT32_C(-2081576252), INT32_C(-1972081268),
                            INT32_C( -563427058), INT32_C( 1922040193), INT32_C(-2102270715), INT32_C(-1257264155),
                            INT32_C( -894851768), INT32_C( 1793334666), INT32_C( 1049305530), INT32_C(-1935379009),
                            INT32_C(   -8279361), INT32_C(-1567490719), INT32_C(-2014130513), INT32_C(-1826154506)),
      simde_mm512_set_epi32(INT32_C(-1084568710), INT32_C( -760240535), INT32_C(  548470804), INT32_C( 1445174141),
                            INT32_C(-2041118423), INT32_C( 1441480698), INT32_C( -715661009), INT32_C( 1609073505),
                            INT32_C( 1214609500), INT32_C(  283085327), INT32_C(  243387122), INT32_C( 1697029857),
                            INT32_C( -806811766), INT32_C(  904412076), INT32_C( 1493651334), INT32_C( -787421338)) },
    { simde_mm512_set_epi32(INT32_C(  997407681), INT32_C(  -83308341), INT32_C( 1430458288), INT32_C( -655910274),
                            INT32_C(   17159218), INT32_C(  197891822), INT32_C(  -82165524), INT32_C(   98130061),
                            INT32_C( -696255503), INT32_C(  616388941), INT32_C( 1383637516), INT32_C(  255219509),
                            INT32_C(-1280964183), INT32_C(-1753221031), INT32_C(  480974923), INT32_C(-1444611560)),
      UINT16_C(47568),
      simde_mm512_set_epi32(INT32_C(-1796791424), INT32_C(  919413682), INT32_C(  907613991), INT32_C(-1471064632),
                            INT32_C(-2017464794), INT32_C(  -67778959), INT32_C(-1033884668), INT32_C( -839095279),
                            INT32_C( -881742684), INT32_C( 1193890045), INT32_C( -817450648), INT32_C( -450889209),
                            INT32_C(-1829442769), INT32_C( -254239276), INT32_C( 1531184539), INT32_C(  204100550)),
      simde_mm512_set_epi32(INT32_C(-1574624316), INT32_C( 1965632168), INT32_C( -507137262), INT32_C(  868285762),
                            INT32_C( -287712967), INT32_C(-1275855491), INT32_C(-1948986373), INT32_C(  378189270),
                            INT32_C( 2028975029), INT32_C( -983819985), INT32_C(-1530834794), INT32_C( -267906659),
                            INT32_C( 2013371063), INT32_C( -972550977), INT32_C(-1345658151), INT32_C(-2001069348)),
      simde_mm512_set_epi32(INT32_C( -222167108), INT32_C(  -83308341), INT32_C( 1414751253), INT32_C( 1955616902),
                            INT32_C(-1729751827), INT32_C(  197891822), INT32_C(  -82165524), INT32_C(-1217284549),
                            INT32_C( 1384249583), INT32_C(-2117257266), INT32_C( 1383637516), INT32_C( -182982550),
                            INT32_C(-1280964183), INT32_C(-1753221031), INT32_C(  480974923), INT32_C(-1444611560)) },
    { simde_mm512_set_epi32(INT32_C( 1875288432), INT32_C( 1158027251), INT32_C( -303056299), INT32_C( -939396673),
                            INT32_C( 1585003262), INT32_C( 1365783459), INT32_C(  111845672), INT32_C(-1286713478),
                            INT32_C(  674624782), INT32_C( 2020528740), INT32_C(  497192398), INT32_C( 1112540789),
                            INT32_C(-1764167278), INT32_C(-1540772359), INT32_C(  395629026), INT32_C(  984304916)),
      UINT16_C(16877),
      simde_mm512_set_epi32(INT32_C( -344292944), INT32_C( 1968428151), INT32_C( 2086978939), INT32_C( 1501910543),
                            INT32_C(-1262393002), INT32_C( 2081469023), INT32_C( 2016768793), INT32_C( 1922434397),
                            INT32_C( -253304624), INT32_C(  515280842), INT32_C(-1708348294), INT32_C( 2107558843),
                            INT32_C( 1919035054), INT32_C( 1742835915), INT32_C(  989439209), INT32_C( 2080310116)),
      simde_mm512_set_epi32(INT32_C( 1560352883), INT32_C( -937050525), INT32_C(   15000953), INT32_C(  298895006),
                            INT32_C( -255287325), INT32_C( -851082971), INT32_C( -981170631), INT32_C(   30364523),
                            INT32_C( -626854551), INT32_C( 1776719697), INT32_C(-1286673883), INT32_C( 2134458392),
                            INT32_C(-1884377437), INT32_C(-2042525337), INT32_C( 2143156805), INT32_C(-1045267304)),
      simde_mm512_set_epi32(INT32_C( 1875288432), INT32_C(-1389488620), INT32_C( -303056299), INT32_C( -939396673),
                            INT32_C( 1585003262), INT32_C( 1365783459), INT32_C(  111845672), INT32_C( 1892069874),
                            INT32_C(  373549927), INT32_C(-1261438855), INT32_C( -421674411), INT32_C( 1112540789),
                            INT32_C( -491554805), INT32_C( -509606044), INT32_C(  395629026), INT32_C(-1169389876)) },
    { simde_mm512_set_epi32(INT32_C(  726531409), INT32_C( -606374582), INT32_C(-1057918709), INT32_C( -811736744),
                            INT32_C(-1460245574), INT32_C( -627872087), INT32_C( 1799586442), INT32_C(-1105519928),
                            INT32_C(-1288829692), INT32_C(-2144392739), INT32_C( 1110910857), INT32_C( -282270116),
                            INT32_C(-1420141426), INT32_C( 1682561587), INT32_C( 1308021682), INT32_C(  712875579)),
      UINT16_C(17567),
      simde_mm512_set_epi32(INT32_C(-1065890522), INT32_C( 1362887862), INT32_C(-1905482051), INT32_C(  174767211),
                            INT32_C( 1968089357), INT32_C(-1207243832), INT32_C( -701927204), INT32_C(-1701909648),
                            INT32_C(-1822821880), INT32_C(-1418686446), INT32_C( 2002979046), INT32_C( -531029674),
                            INT32_C( -233545704), INT32_C( 1270923539), INT32_C( -515398077), INT32_C(  870828526)),
      simde_mm512_set_epi32(INT32_C(-1161246521), INT32_C(-1263382687), INT32_C( -761171059), INT32_C( 1052537110),
                            INT32_C(-1225204820), INT32_C( 1299827393), INT32_C(  477328169), INT32_C( 2043159101),
                            INT32_C(  984199920), INT32_C( 1963689737), INT32_C(-1149812166), INT32_C( -500241318),
                            INT32_C( -953270640), INT32_C( 1180984926), INT32_C( -645305643), INT32_C( 1026486800)),
      simde_mm512_set_epi32(INT32_C(  726531409), INT32_C(-1668696747), INT32_C(-1057918709), INT32_C( -811736744),
                            INT32_C(-1460245574), INT32_C( 1787896071), INT32_C( 1799586442), INT32_C(-1105519928),
                            INT32_C( 1487945496), INT32_C(-2144392739), INT32_C( 1110910857), INT32_C(  -30788356),
                            INT32_C(  719724936), INT32_C(   89938613), INT32_C(  129907566), INT32_C( -155658274)) },
    { simde_mm512_set_epi32(INT32_C( 1723004290), INT32_C(  721161302), INT32_C( 1077400739), INT32_C(  861837752),
                            INT32_C(-1943224858), INT32_C( 2112602876), INT32_C(-1445821889), INT32_C(-2100432693),
                            INT32_C(-1175934343), INT32_C(  805502143), INT32_C( 1163969458), INT32_C(  873642413),
                            INT32_C( 2052720739), INT32_C(-1010971457), INT32_C(  199344228), INT32_C(  251460647)),
      UINT16_C(59134),
      simde_mm512_set_epi32(INT32_C(-1391704351), INT32_C( -847303025), INT32_C(-1711491580), INT32_C( -147993971),
                            INT32_C(-1140349230), INT32_C(  172650828), INT32_C(-2090294261), INT32_C( -216506888),
                            INT32_C(-1813744120), INT32_C( 1589656338), INT32_C( 1010967585), INT32_C(-2076714127),
                            INT32_C( 1156626662), INT32_C( -264321123), INT32_C(-1099385436), INT32_C( -148901794)),
      simde_mm512_set_epi32(INT32_C( 1003282629), INT32_C( 1250297288), INT32_C(   26548422), INT32_C(-1100962758),
                            INT32_C( 1934048830), INT32_C( -886200980), INT32_C( -228926178), INT32_C(   21722717),
                            INT32_C(-1321187708), INT32_C(  904822803), INT32_C( -875700432), INT32_C(-1302414558),
                            INT32_C(  962131440), INT32_C( -729214075), INT32_C(-1094266114), INT32_C( 1122895720)),
      simde_mm512_set_epi32(INT32_C( 1899980316), INT32_C(-2097600313), INT32_C(-1738040002), INT32_C(  861837752),
                            INT32_C(-1943224858), INT32_C( 1058851808), INT32_C(-1861368083), INT32_C(-2100432693),
                            INT32_C( -492556412), INT32_C(  684833535), INT32_C( 1886668017), INT32_C( -774299569),
                            INT32_C(  194495222), INT32_C(  464892952), INT32_C(   -5119322), INT32_C(  251460647)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m512i r = simde_mm512_mask_sub_epi32(test_vec[i].src, test_vec[i].k, test_vec[i].a, test_vec[i].b);
    simde_assert_m512i_i32(r, ==, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm512_mask_sub_epi64(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m512i src;
    simde__mmask8 k;
    simde__m512i a;
    simde__m512i b;
    simde__m512i r;
  } test_vec[8] = {
    { simde_mm512_set_epi64(INT64_C( 8894478799917719473), INT64_C(-7614529333518044459),
                            INT64_C( 8458392650500739529), INT64_C( 7085639313865748967),
                            INT64_C(-7547504459018552290), INT64_C(-8310189466716392279),
                            INT64_C(-1750715323825344235), INT64_C(-2532781790488219528)),
      UINT8_C(106),
      simde_mm512_set_epi64(INT64_C(-7192427816606966254), INT64_C(-1619523557840103557),
                            INT64_C( 7616061596213068646), INT64_C( -560841280842371832),
                            INT64_C( -806373115982863580), INT64_C( -816793021936842074),
                            INT64_C( -317565234288882547), INT64_C(-7290553309909260368)),
      simde_mm512_set_epi64(INT64_C(-9084839040863053259), INT64_C(  332697972184433101),
                            INT64_C(-8959492887484217950), INT64_C( 7617292932467329680),
                            INT64_C(-2740045277871922718), INT64_C(-3634413508032825567),
                            INT64_C( -448440935066054877), INT64_C(-6805574594168851327)),
      simde_mm512_set_epi64(INT64_C( 8894478799917719473), INT64_C(-1952221530024536658),
                            INT64_C(-1871189590012265020), INT64_C( 7085639313865748967),
                            INT64_C( 1933672161889059138), INT64_C(-8310189466716392279),
                            INT64_C(  130875700777172330), INT64_C(-2532781790488219528)) },
    { simde_mm512_set_epi64(INT64_C(-3459089877760882917), INT64_C( 1753327656617706405),
                            INT64_C( 3932187030396497555), INT64_C(-4341921971190139713),
                            INT64_C(-7354864635860030437), INT64_C(-7512931671900842140),
                            INT64_C( 7677521206664265888), INT64_C(-8008068901606036732)),
      UINT8_C(  1),
      simde_mm512_set_epi64(INT64_C(-9084086707853197365), INT64_C( 5962789269656503800),
                            INT64_C( 6806616562165680967), INT64_C( 8724516399523474076),
                            INT64_C( -924171789017863248), INT64_C(-2255835938032964673),
                            INT64_C(-4560088794132063361), INT64_C(-5517329800302195238)),
      simde_mm512_set_epi64(INT64_C(-2849655299932577704), INT64_C( 2712991932590941674),
                            INT64_C( 2564329750539599066), INT64_C(-4536455326234991583),
                            INT64_C(-6477728239233614839), INT64_C(-5729565646249538826),
                            INT64_C( 3092410715614407585), INT64_C( 7984397770129184299)),
      simde_mm512_set_epi64(INT64_C(-3459089877760882917), INT64_C( 1753327656617706405),
                            INT64_C( 3932187030396497555), INT64_C(-4341921971190139713),
                            INT64_C(-7354864635860030437), INT64_C(-7512931671900842140),
                            INT64_C( 7677521206664265888), INT64_C( 4945016503278172079)) },
    { simde_mm512_set_epi64(INT64_C( -240340334077349403), INT64_C( 5647038489743797240),
                            INT64_C( 5171415873092064400), INT64_C(-1851380595205120917),
                            INT64_C( -836370148956202078), INT64_C( 8425549504970400810),
                            INT64_C( 2808549870315159479), INT64_C( 3545474415643732634)),
      UINT8_C(194),
      simde_mm512_set_epi64(INT64_C(-5877702108931305293), INT64_C(-5372639016544358566),
                            INT64_C(-4535660820549680684), INT64_C(-6747544612783901147),
                            INT64_C( 6705850594648382655), INT64_C(-1906321743942105225),
                            INT64_C( -281981608123407868), INT64_C(-5990711758326206044)),
      simde_mm512_set_epi64(INT64_C( 8110080903340414341), INT64_C(-3598578875674169061),
                            INT64_C( 4977285870543484474), INT64_C( 6776152673642620958),
                            INT64_C( 4245929756722282054), INT64_C( 3649495924615361625),
                            INT64_C( -638056186877872345), INT64_C(-8828385988165140326)),
      simde_mm512_set_epi64(INT64_C( 4458961061437831982), INT64_C(-1774060140870189505),
                            INT64_C( 5171415873092064400), INT64_C(-1851380595205120917),
                            INT64_C( -836370148956202078), INT64_C( 8425549504970400810),
                            INT64_C(  356074578754464477), INT64_C( 3545474415643732634)) },
    { simde_mm512_set_epi64(INT64_C(-6385979888474332285), INT64_C( 3716758445629922885),
                            INT64_C( 7861010731589253148), INT64_C(-6334773111204875550),
                            INT64_C(-5054960975820633825), INT64_C( 8639514840721539279),
                            INT64_C(-1027366943904624518), INT64_C(-4721195859159142702)),
      UINT8_C(222),
      simde_mm512_set_epi64(INT64_C(-7001132877809342173), INT64_C( 6512733899690414848),
                            INT64_C(  988878120815000883), INT64_C(-5994563704199492012),
                            INT64_C( 1587634372980811194), INT64_C( -914749563856678715),
                            INT64_C( 7495962388934953888), INT64_C(-7831181051188885332)),
      simde_mm512_set_epi64(INT64_C( 4229507402435677476), INT64_C( 2501842736425447642),
                            INT64_C( 8009397189160901283), INT64_C( 3833558633773719409),
                            INT64_C( 2852442819818074174), INT64_C(-8638015813272823849),
                            INT64_C( 8579593880416924807), INT64_C( 2713766728753976690)),
      simde_mm512_set_epi64(INT64_C( 7216103793464531967), INT64_C( 4010891163264967206),
                            INT64_C( 7861010731589253148), INT64_C( 8618621735736340195),
                            INT64_C(-1264808446837262980), INT64_C( 7723266249416145134),
                            INT64_C(-1083631491481970919), INT64_C(-4721195859159142702)) },
    { simde_mm512_set_epi64(INT64_C( 4051614369896270101), INT64_C( 6703896128856670897),
                            INT64_C(-5750389130785475983), INT64_C(-7878547924784098469),
                            INT64_C( 5491867996743881624), INT64_C(-2189602113514909499),
                            INT64_C( -887220462507309287), INT64_C(-5733898489940979010)),
      UINT8_C( 26),
      simde_mm512_set_epi64(INT64_C(  -99656633840764240), INT64_C(-3479731851565468885),
                            INT64_C(-7074577238264434881), INT64_C(-3836339826871533273),
                            INT64_C( 4198283975631841849), INT64_C(-3829622956767240841),
                            INT64_C( 5960966148924368684), INT64_C( -504125670847055963)),
      simde_mm512_set_epi64(INT64_C(-8344319212574510912), INT64_C(-3371415321000668561),
                            INT64_C(-8338525176508042897), INT64_C( 5173420397567361383),
                            INT64_C(-6751809518396836721), INT64_C(-8388491552134432960),
                            INT64_C(-9161028627110906680), INT64_C( 7472048750700349549)),
      simde_mm512_set_epi64(INT64_C( 4051614369896270101), INT64_C( 6703896128856670897),
                            INT64_C(-5750389130785475983), INT64_C(-9009760224438894656),
                            INT64_C(-7496650579680873046), INT64_C(-2189602113514909499),
                            INT64_C(-3324749297674276252), INT64_C(-5733898489940979010)) },
    { simde_mm512_set_epi64(INT64_C(-6378393891104748170), INT64_C(-8478287659785501826),
                            INT64_C(-2127236125072242134), INT64_C( 8702738982982040445),
                            INT64_C(  645844328650761785), INT64_C(-4561773442934600720),
                            INT64_C(-5793568656482259588), INT64_C( -379681413311801170)),
      UINT8_C(230),
      simde_mm512_set_epi64(INT64_C( -848706848545220792), INT64_C(-1124075123789220737),
                            INT64_C(-2005439629632543252), INT64_C( 8274388146286059619),
                            INT64_C( -261550962782015927), INT64_C(-8761037216848109215),
                            INT64_C(-3016365966836321630), INT64_C( 2543055264688040393)),
      simde_mm512_set_epi64(INT64_C( 1583638370136684317), INT64_C(-1184919915070849427),
                            INT64_C( 6948286910398693964), INT64_C( 2437457976149582578),
                            INT64_C( 3426542754873284897), INT64_C(-7983270512780038531),
                            INT64_C( 1779296328975282374), INT64_C(-5362999871220584978)),
      simde_mm512_set_epi64(INT64_C(-2432345218681905109), INT64_C(   60844791281628690),
                            INT64_C(-8953726540031237216), INT64_C( 8702738982982040445),
                            INT64_C(  645844328650761785), INT64_C( -777766704068070684),
                            INT64_C(-4795662295811604004), INT64_C( -379681413311801170)) },
    { simde_mm512_set_epi64(INT64_C(-2563692560784467599), INT64_C(-2764729313181954331),
                            INT64_C( 7449793955604076666), INT64_C(-6302011830015535814),
                            INT64_C(-5919077484698028869), INT64_C(-6127059769393124093),
                            INT64_C( 2958642729945465911), INT64_C( 2772140786646472311)),
      UINT8_C(198),
      simde_mm512_set_epi64(INT64_C(-3934991658845807023), INT64_C( 7561755153516237296),
                            INT64_C(-1521478373140770922), INT64_C( 6956443634033398294),
                            INT64_C(-5307063963483146371), INT64_C( 6556039892370535969),
                            INT64_C(-6645788521893978945), INT64_C(-6307512051127595595)),
      simde_mm512_set_epi64(INT64_C(-7270561721689602230), INT64_C( 8935792808270452615),
                            INT64_C( 1984489943341614372), INT64_C( 6860868624136070257),
                            INT64_C(-2243581398369652256), INT64_C(-6592818671779181804),
                            INT64_C( -308663241436655846), INT64_C(-8935526257161672911)),
      simde_mm512_set_epi64(INT64_C( 3335570062843795207), INT64_C(-1374037654754215319),
                            INT64_C( 7449793955604076666), INT64_C(-6302011830015535814),
                            INT64_C(-5919077484698028869), INT64_C(-5297885509559833843),
                            INT64_C(-6337125280457323099), INT64_C( 2772140786646472311)) },
    { simde_mm512_set_epi64(INT64_C(-7511866029206584895), INT64_C( 6685003933657692663),
                            INT64_C(  112057327023275278), INT64_C( 2785131907782223781),
                            INT64_C( -403719025987547254), INT64_C(-5974279397850363938),
                            INT64_C(-6601571580489345254), INT64_C( 1896379997419403836)),
      UINT8_C( 70),
      simde_mm512_set_epi64(INT64_C(-6334367433946281110), INT64_C(-5840485098030444461),
                            INT64_C(-6383956557021185117), INT64_C(-7600398675722821668),
                            INT64_C(-2279362749413199885), INT64_C(-8009539466982888201),
                            INT64_C(  340327559398526723), INT64_C(-2438629088141247826)),
      simde_mm512_set_epi64(INT64_C( 3758222621544461478), INT64_C( 8264387002851618510),
                            INT64_C( 5256515298231032169), INT64_C( 4555501816451377355),
                            INT64_C(-9184304616258229288), INT64_C( 5115688705834988612),
                            INT64_C(-3795492187184599084), INT64_C(-3221204559120447653)),
      simde_mm512_set_epi64(INT64_C(-7511866029206584895), INT64_C( 4341871972827488645),
                            INT64_C(  112057327023275278), INT64_C( 2785131907782223781),
                            INT64_C( -403719025987547254), INT64_C( 5321515900891674803),
                            INT64_C( 4135819746583125807), INT64_C( 1896379997419403836)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m512i r = simde_mm512_mask_sub_epi64(test_vec[i].src, test_vec[i].k, test_vec[i].a, test_vec[i].b);
    simde_assert_m512i_i64(r, ==, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm512_mask_sub_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m512 src;
    simde__mmask16 k;
    simde__m512 a;
    simde__m512 b;
    simde__m512 r;
  } test_vec[8] = {
    { simde_mm512_set_ps(SIMDE_FLOAT32_C(  -417.79), SIMDE_FLOAT32_C(  -912.83), SIMDE_FLOAT32_C(   111.29), SIMDE_FLOAT32_C(  -470.87),
                         SIMDE_FLOAT32_C(   685.45), SIMDE_FLOAT32_C(   -92.85), SIMDE_FLOAT32_C(   704.55), SIMDE_FLOAT32_C(   450.79),
                         SIMDE_FLOAT32_C(  -761.01), SIMDE_FLOAT32_C(  -759.35), SIMDE_FLOAT32_C(   646.77), SIMDE_FLOAT32_C(   616.33),
                         SIMDE_FLOAT32_C(   922.76), SIMDE_FLOAT32_C(   721.94), SIMDE_FLOAT32_C(   721.78), SIMDE_FLOAT32_C(   651.66)),
      UINT16_C(55049),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(   492.15), SIMDE_FLOAT32_C(   363.86), SIMDE_FLOAT32_C(  -906.93), SIMDE_FLOAT32_C(   -51.88),
                         SIMDE_FLOAT32_C(   976.36), SIMDE_FLOAT32_C(   844.84), SIMDE_FLOAT32_C(   525.57), SIMDE_FLOAT32_C(   575.43),
                         SIMDE_FLOAT32_C(  -719.61), SIMDE_FLOAT32_C(   570.91), SIMDE_FLOAT32_C(  -748.06), SIMDE_FLOAT32_C(   823.89),
                         SIMDE_FLOAT32_C(  -708.11), SIMDE_FLOAT32_C(  -805.87), SIMDE_FLOAT32_C(   626.28), SIMDE_FLOAT32_C(   344.43)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(  -814.48), SIMDE_FLOAT32_C(   843.19), SIMDE_FLOAT32_C(  -866.28), SIMDE_FLOAT32_C(  -230.51),
                         SIMDE_FLOAT32_C(  -264.51), SIMDE_FLOAT32_C(   935.39), SIMDE_FLOAT32_C(   479.68), SIMDE_FLOAT32_C(  -375.52),
                         SIMDE_FLOAT32_C(  -928.92), SIMDE_FLOAT32_C(  -243.75), SIMDE_FLOAT32_C(   771.60), SIMDE_FLOAT32_C(   150.31),
                         SIMDE_FLOAT32_C(  -627.83), SIMDE_FLOAT32_C(  -720.61), SIMDE_FLOAT32_C(   345.13), SIMDE_FLOAT32_C(   203.00)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(  1306.63), SIMDE_FLOAT32_C(  -479.33), SIMDE_FLOAT32_C(   111.29), SIMDE_FLOAT32_C(   178.63),
                         SIMDE_FLOAT32_C(   685.45), SIMDE_FLOAT32_C(   -90.55), SIMDE_FLOAT32_C(    45.89), SIMDE_FLOAT32_C(   950.95),
                         SIMDE_FLOAT32_C(  -761.01), SIMDE_FLOAT32_C(  -759.35), SIMDE_FLOAT32_C(   646.77), SIMDE_FLOAT32_C(   616.33),
                         SIMDE_FLOAT32_C(   -80.28), SIMDE_FLOAT32_C(   721.94), SIMDE_FLOAT32_C(   721.78), SIMDE_FLOAT32_C(   141.43)) },
    { simde_mm512_set_ps(SIMDE_FLOAT32_C(  -594.79), SIMDE_FLOAT32_C(   -68.26), SIMDE_FLOAT32_C(   772.68), SIMDE_FLOAT32_C(  -615.12),
                         SIMDE_FLOAT32_C(   489.20), SIMDE_FLOAT32_C(  -609.74), SIMDE_FLOAT32_C(  -297.42), SIMDE_FLOAT32_C(  -701.58),
                         SIMDE_FLOAT32_C(    71.34), SIMDE_FLOAT32_C(  -811.20), SIMDE_FLOAT32_C(   -44.61), SIMDE_FLOAT32_C(   172.32),
                         SIMDE_FLOAT32_C(  -336.24), SIMDE_FLOAT32_C(  -959.77), SIMDE_FLOAT32_C(   896.40), SIMDE_FLOAT32_C(   321.28)),
      UINT16_C( 2266),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(   136.73), SIMDE_FLOAT32_C(   408.70), SIMDE_FLOAT32_C(   907.04), SIMDE_FLOAT32_C(   175.32),
                         SIMDE_FLOAT32_C(   125.78), SIMDE_FLOAT32_C(  -176.42), SIMDE_FLOAT32_C(  -192.20), SIMDE_FLOAT32_C(   636.29),
                         SIMDE_FLOAT32_C(  -812.72), SIMDE_FLOAT32_C(  -295.02), SIMDE_FLOAT32_C(   426.00), SIMDE_FLOAT32_C(   348.29),
                         SIMDE_FLOAT32_C(   859.20), SIMDE_FLOAT32_C(   -28.95), SIMDE_FLOAT32_C(  -637.06), SIMDE_FLOAT32_C(  -450.15)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(  -929.87), SIMDE_FLOAT32_C(  -208.53), SIMDE_FLOAT32_C(   561.71), SIMDE_FLOAT32_C(   -74.05),
                         SIMDE_FLOAT32_C(   477.79), SIMDE_FLOAT32_C(   772.49), SIMDE_FLOAT32_C(   648.48), SIMDE_FLOAT32_C(   -58.61),
                         SIMDE_FLOAT32_C(   835.38), SIMDE_FLOAT32_C(  -689.00), SIMDE_FLOAT32_C(   607.03), SIMDE_FLOAT32_C(   421.78),
                         SIMDE_FLOAT32_C(  -574.15), SIMDE_FLOAT32_C(   302.76), SIMDE_FLOAT32_C(   178.11), SIMDE_FLOAT32_C(  -298.57)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(  -594.79), SIMDE_FLOAT32_C(   -68.26), SIMDE_FLOAT32_C(   772.68), SIMDE_FLOAT32_C(  -615.12),
                         SIMDE_FLOAT32_C(  -352.01), SIMDE_FLOAT32_C(  -609.74), SIMDE_FLOAT32_C(  -297.42), SIMDE_FLOAT32_C(  -701.58),
                         SIMDE_FLOAT32_C( -1648.10), SIMDE_FLOAT32_C(   393.98), SIMDE_FLOAT32_C(   -44.61), SIMDE_FLOAT32_C(   -73.49),
                         SIMDE_FLOAT32_C(  1433.35), SIMDE_FLOAT32_C(  -959.77), SIMDE_FLOAT32_C(  -815.17), SIMDE_FLOAT32_C(   321.28)) },
    { simde_mm512_set_ps(SIMDE_FLOAT32_C(  -914.76), SIMDE_FLOAT32_C(   285.68), SIMDE_FLOAT32_C(   695.03), SIMDE_FLOAT32_C(  -235.78),
                         SIMDE_FLOAT32_C(    90.17), SIMDE_FLOAT32_C(   891.02), SIMDE_FLOAT32_C(  -456.46), SIMDE_FLOAT32_C(   952.55),
                         SIMDE_FLOAT32_C(  -153.33), SIMDE_FLOAT32_C(  -533.35), SIMDE_FLOAT32_C(  -130.02), SIMDE_FLOAT32_C(  -580.21),
                         SIMDE_FLOAT32_C(  -857.73), SIMDE_FLOAT32_C(  -362.64), SIMDE_FLOAT32_C(   808.25), SIMDE_FLOAT32_C(   908.95)),
      UINT16_C(53407),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(   415.38), SIMDE_FLOAT32_C(   622.33), SIMDE_FLOAT32_C(   849.49), SIMDE_FLOAT32_C(  -552.97),
                         SIMDE_FLOAT32_C(   837.01), SIMDE_FLOAT32_C(  -753.98), SIMDE_FLOAT32_C(   167.51), SIMDE_FLOAT32_C(   898.60),
                         SIMDE_FLOAT32_C(   -36.68), SIMDE_FLOAT32_C(  -931.19), SIMDE_FLOAT32_C(   230.22), SIMDE_FLOAT32_C(  -885.80),
                         SIMDE_FLOAT32_C(  -894.49), SIMDE_FLOAT32_C(  -402.23), SIMDE_FLOAT32_C(   -68.60), SIMDE_FLOAT32_C(  -153.88)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(   247.18), SIMDE_FLOAT32_C(   507.40), SIMDE_FLOAT32_C(  -715.17), SIMDE_FLOAT32_C(   785.48),
                         SIMDE_FLOAT32_C(  -543.41), SIMDE_FLOAT32_C(   761.08), SIMDE_FLOAT32_C(   479.07), SIMDE_FLOAT32_C(  -938.93),
                         SIMDE_FLOAT32_C(  -655.56), SIMDE_FLOAT32_C(   618.55), SIMDE_FLOAT32_C(   224.83), SIMDE_FLOAT32_C(  -983.99),
                         SIMDE_FLOAT32_C(   -18.22), SIMDE_FLOAT32_C(  -142.62), SIMDE_FLOAT32_C(   120.01), SIMDE_FLOAT32_C(   186.92)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(   168.20), SIMDE_FLOAT32_C(   114.93), SIMDE_FLOAT32_C(   695.03), SIMDE_FLOAT32_C( -1338.45),
                         SIMDE_FLOAT32_C(    90.17), SIMDE_FLOAT32_C(   891.02), SIMDE_FLOAT32_C(  -456.46), SIMDE_FLOAT32_C(   952.55),
                         SIMDE_FLOAT32_C(   618.88), SIMDE_FLOAT32_C(  -533.35), SIMDE_FLOAT32_C(  -130.02), SIMDE_FLOAT32_C(    98.19),
                         SIMDE_FLOAT32_C(  -876.27), SIMDE_FLOAT32_C(  -259.61), SIMDE_FLOAT32_C(  -188.61), SIMDE_FLOAT32_C(  -340.80)) },
    { simde_mm512_set_ps(SIMDE_FLOAT32_C(  -586.97), SIMDE_FLOAT32_C(  -706.71), SIMDE_FLOAT32_C(   862.31), SIMDE_FLOAT32_C(   901.76),
                         SIMDE_FLOAT32_C(  -777.23), SIMDE_FLOAT32_C(  -615.23), SIMDE_FLOAT32_C(   540.06), SIMDE_FLOAT32_C(  -837.05),
                         SIMDE_FLOAT32_C(   896.68), SIMDE_FLOAT32_C(  -818.79), SIMDE_FLOAT32_C(  -146.21), SIMDE_FLOAT32_C(  -751.20),
                         SIMDE_FLOAT32_C(  -724.86), SIMDE_FLOAT32_C(  -446.10), SIMDE_FLOAT32_C(   747.21), SIMDE_FLOAT32_C(  -830.22)),
      UINT16_C(24145),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(   809.72), SIMDE_FLOAT32_C(  -191.45), SIMDE_FLOAT32_C(  -687.88), SIMDE_FLOAT32_C(  -561.69),
                         SIMDE_FLOAT32_C(   623.06), SIMDE_FLOAT32_C(  -685.16), SIMDE_FLOAT32_C(   155.59), SIMDE_FLOAT32_C(   -91.67),
                         SIMDE_FLOAT32_C(  -292.32), SIMDE_FLOAT32_C(   436.29), SIMDE_FLOAT32_C(   682.53), SIMDE_FLOAT32_C(  -427.71),
                         SIMDE_FLOAT32_C(  -252.26), SIMDE_FLOAT32_C(  -814.33), SIMDE_FLOAT32_C(  -116.78), SIMDE_FLOAT32_C(  -176.18)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(  -476.63), SIMDE_FLOAT32_C(  -403.49), SIMDE_FLOAT32_C(  -129.06), SIMDE_FLOAT32_C(  -540.32),
                         SIMDE_FLOAT32_C(  -296.84), SIMDE_FLOAT32_C(   354.93), SIMDE_FLOAT32_C(   301.70), SIMDE_FLOAT32_C(   818.26),
                         SIMDE_FLOAT32_C(   152.41), SIMDE_FLOAT32_C(    -7.33), SIMDE_FLOAT32_C(   901.12), SIMDE_FLOAT32_C(   276.49),
                         SIMDE_FLOAT32_C(  -421.45), SIMDE_FLOAT32_C(   -19.17), SIMDE_FLOAT32_C(   559.47), SIMDE_FLOAT32_C(   -62.60)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(  -586.97), SIMDE_FLOAT32_C(   212.04), SIMDE_FLOAT32_C(   862.31), SIMDE_FLOAT32_C(   -21.37),
                         SIMDE_FLOAT32_C(   919.90), SIMDE_FLOAT32_C( -1040.09), SIMDE_FLOAT32_C(  -146.11), SIMDE_FLOAT32_C(  -837.05),
                         SIMDE_FLOAT32_C(   896.68), SIMDE_FLOAT32_C(   443.62), SIMDE_FLOAT32_C(  -146.21), SIMDE_FLOAT32_C(  -704.20),
                         SIMDE_FLOAT32_C(  -724.86), SIMDE_FLOAT32_C(  -446.10), SIMDE_FLOAT32_C(   747.21), SIMDE_FLOAT32_C(  -113.58)) },
    { simde_mm512_set_ps(SIMDE_FLOAT32_C(   853.44), SIMDE_FLOAT32_C(   804.93), SIMDE_FLOAT32_C(   753.54), SIMDE_FLOAT32_C(   129.42),
                         SIMDE_FLOAT32_C(  -911.24), SIMDE_FLOAT32_C(  -795.01), SIMDE_FLOAT32_C(  -264.21), SIMDE_FLOAT32_C(   110.23),
                         SIMDE_FLOAT32_C(   779.42), SIMDE_FLOAT32_C(   756.19), SIMDE_FLOAT32_C(   -61.94), SIMDE_FLOAT32_C(  -845.71),
                         SIMDE_FLOAT32_C(   522.75), SIMDE_FLOAT32_C(   703.06), SIMDE_FLOAT32_C(   989.80), SIMDE_FLOAT32_C(   594.14)),
      UINT16_C(58122),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(   774.43), SIMDE_FLOAT32_C(   251.56), SIMDE_FLOAT32_C(  -915.66), SIMDE_FLOAT32_C(  -492.31),
                         SIMDE_FLOAT32_C(   722.32), SIMDE_FLOAT32_C(   853.19), SIMDE_FLOAT32_C(   466.28), SIMDE_FLOAT32_C(   573.97),
                         SIMDE_FLOAT32_C(  -516.73), SIMDE_FLOAT32_C(  -267.27), SIMDE_FLOAT32_C(   110.95), SIMDE_FLOAT32_C(   -68.16),
                         SIMDE_FLOAT32_C(  -400.30), SIMDE_FLOAT32_C(   327.53), SIMDE_FLOAT32_C(  -638.51), SIMDE_FLOAT32_C(   -96.92)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(   101.96), SIMDE_FLOAT32_C(  -734.61), SIMDE_FLOAT32_C(   219.43), SIMDE_FLOAT32_C(  -507.66),
                         SIMDE_FLOAT32_C(  -747.54), SIMDE_FLOAT32_C(   794.68), SIMDE_FLOAT32_C(  -663.99), SIMDE_FLOAT32_C(  -123.94),
                         SIMDE_FLOAT32_C(  -793.12), SIMDE_FLOAT32_C(   673.57), SIMDE_FLOAT32_C(  -777.14), SIMDE_FLOAT32_C(   175.88),
                         SIMDE_FLOAT32_C(  -792.24), SIMDE_FLOAT32_C(  -246.51), SIMDE_FLOAT32_C(   848.21), SIMDE_FLOAT32_C(  -124.15)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(   672.47), SIMDE_FLOAT32_C(   986.17), SIMDE_FLOAT32_C( -1135.09), SIMDE_FLOAT32_C(   129.42),
                         SIMDE_FLOAT32_C(  -911.24), SIMDE_FLOAT32_C(  -795.01), SIMDE_FLOAT32_C(  1130.27), SIMDE_FLOAT32_C(   697.91),
                         SIMDE_FLOAT32_C(   779.42), SIMDE_FLOAT32_C(   756.19), SIMDE_FLOAT32_C(   -61.94), SIMDE_FLOAT32_C(  -845.71),
                         SIMDE_FLOAT32_C(   391.94), SIMDE_FLOAT32_C(   703.06), SIMDE_FLOAT32_C( -1486.72), SIMDE_FLOAT32_C(   594.14)) },
    { simde_mm512_set_ps(SIMDE_FLOAT32_C(  -670.29), SIMDE_FLOAT32_C(   821.01), SIMDE_FLOAT32_C(  -293.06), SIMDE_FLOAT32_C(   -56.42),
                         SIMDE_FLOAT32_C(  -163.64), SIMDE_FLOAT32_C(  -919.47), SIMDE_FLOAT32_C(   636.75), SIMDE_FLOAT32_C(   555.64),
                         SIMDE_FLOAT32_C(   630.28), SIMDE_FLOAT32_C(   798.33), SIMDE_FLOAT32_C(  -536.88), SIMDE_FLOAT32_C(   256.29),
                         SIMDE_FLOAT32_C(   834.99), SIMDE_FLOAT32_C(  -678.50), SIMDE_FLOAT32_C(  -716.28), SIMDE_FLOAT32_C(  -235.17)),
      UINT16_C( 7968),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(   575.18), SIMDE_FLOAT32_C(  -655.63), SIMDE_FLOAT32_C(   986.91), SIMDE_FLOAT32_C(   710.96),
                         SIMDE_FLOAT32_C(   921.30), SIMDE_FLOAT32_C(   -96.00), SIMDE_FLOAT32_C(   -68.75), SIMDE_FLOAT32_C(  -119.17),
                         SIMDE_FLOAT32_C(  -795.52), SIMDE_FLOAT32_C(  -851.06), SIMDE_FLOAT32_C(   982.58), SIMDE_FLOAT32_C(   432.45),
                         SIMDE_FLOAT32_C(   834.71), SIMDE_FLOAT32_C(  -931.48), SIMDE_FLOAT32_C(   421.86), SIMDE_FLOAT32_C(   549.54)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(   699.42), SIMDE_FLOAT32_C(  -430.21), SIMDE_FLOAT32_C(  -842.83), SIMDE_FLOAT32_C(  -375.32),
                         SIMDE_FLOAT32_C(  -889.13), SIMDE_FLOAT32_C(    77.46), SIMDE_FLOAT32_C(  -426.32), SIMDE_FLOAT32_C(  -319.52),
                         SIMDE_FLOAT32_C(   633.46), SIMDE_FLOAT32_C(  -484.05), SIMDE_FLOAT32_C(   991.09), SIMDE_FLOAT32_C(   894.84),
                         SIMDE_FLOAT32_C(   148.17), SIMDE_FLOAT32_C(  -167.11), SIMDE_FLOAT32_C(  -811.87), SIMDE_FLOAT32_C(  -574.29)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(  -670.29), SIMDE_FLOAT32_C(   821.01), SIMDE_FLOAT32_C(  -293.06), SIMDE_FLOAT32_C(  1086.28),
                         SIMDE_FLOAT32_C(  1810.43), SIMDE_FLOAT32_C(  -173.46), SIMDE_FLOAT32_C(   357.57), SIMDE_FLOAT32_C(   200.35),
                         SIMDE_FLOAT32_C(   630.28), SIMDE_FLOAT32_C(   798.33), SIMDE_FLOAT32_C(    -8.51), SIMDE_FLOAT32_C(   256.29),
                         SIMDE_FLOAT32_C(   834.99), SIMDE_FLOAT32_C(  -678.50), SIMDE_FLOAT32_C(  -716.28), SIMDE_FLOAT32_C(  -235.17)) },
    { simde_mm512_set_ps(SIMDE_FLOAT32_C(   640.00), SIMDE_FLOAT32_C(   440.55), SIMDE_FLOAT32_C(   793.44), SIMDE_FLOAT32_C(   554.05),
                         SIMDE_FLOAT32_C(   245.74), SIMDE_FLOAT32_C(  -388.16), SIMDE_FLOAT32_C(   -27.32), SIMDE_FLOAT32_C(  -923.44),
                         SIMDE_FLOAT32_C(   109.81), SIMDE_FLOAT32_C(   855.67), SIMDE_FLOAT32_C(  -513.53), SIMDE_FLOAT32_C(  -921.47),
                         SIMDE_FLOAT32_C(  -410.90), SIMDE_FLOAT32_C(  -404.15), SIMDE_FLOAT32_C(  -502.43), SIMDE_FLOAT32_C(  -674.13)),
      UINT16_C(34235),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(   455.94), SIMDE_FLOAT32_C(   822.75), SIMDE_FLOAT32_C(   672.52), SIMDE_FLOAT32_C(   418.16),
                         SIMDE_FLOAT32_C(   993.17), SIMDE_FLOAT32_C(  -581.12), SIMDE_FLOAT32_C(   737.02), SIMDE_FLOAT32_C(   -48.12),
                         SIMDE_FLOAT32_C(   169.53), SIMDE_FLOAT32_C(   875.02), SIMDE_FLOAT32_C(   325.94), SIMDE_FLOAT32_C(  -197.05),
                         SIMDE_FLOAT32_C(   209.80), SIMDE_FLOAT32_C(   679.16), SIMDE_FLOAT32_C(  -743.34), SIMDE_FLOAT32_C(   192.93)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(  -400.32), SIMDE_FLOAT32_C(   747.89), SIMDE_FLOAT32_C(  -417.14), SIMDE_FLOAT32_C(  -149.76),
                         SIMDE_FLOAT32_C(  -769.13), SIMDE_FLOAT32_C(   952.70), SIMDE_FLOAT32_C(    55.59), SIMDE_FLOAT32_C(  -118.59),
                         SIMDE_FLOAT32_C(  -651.36), SIMDE_FLOAT32_C(   213.50), SIMDE_FLOAT32_C(   998.39), SIMDE_FLOAT32_C(   155.85),
                         SIMDE_FLOAT32_C(   985.22), SIMDE_FLOAT32_C(  -399.37), SIMDE_FLOAT32_C(  -660.54), SIMDE_FLOAT32_C(  -918.87)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(   856.26), SIMDE_FLOAT32_C(   440.55), SIMDE_FLOAT32_C(   793.44), SIMDE_FLOAT32_C(   554.05),
                         SIMDE_FLOAT32_C(   245.74), SIMDE_FLOAT32_C( -1533.82), SIMDE_FLOAT32_C(   -27.32), SIMDE_FLOAT32_C(    70.47),
                         SIMDE_FLOAT32_C(   820.89), SIMDE_FLOAT32_C(   855.67), SIMDE_FLOAT32_C(  -672.45), SIMDE_FLOAT32_C(  -352.90),
                         SIMDE_FLOAT32_C(  -775.42), SIMDE_FLOAT32_C(  -404.15), SIMDE_FLOAT32_C(   -82.80), SIMDE_FLOAT32_C(  1111.80)) },
    { simde_mm512_set_ps(SIMDE_FLOAT32_C(  -717.43), SIMDE_FLOAT32_C(   307.65), SIMDE_FLOAT32_C(  -776.64), SIMDE_FLOAT32_C(   883.24),
                         SIMDE_FLOAT32_C(   462.38), SIMDE_FLOAT32_C(   941.52), SIMDE_FLOAT32_C(   465.21), SIMDE_FLOAT32_C(   772.92),
                         SIMDE_FLOAT32_C(  -448.96), SIMDE_FLOAT32_C(   167.95), SIMDE_FLOAT32_C(  -770.79), SIMDE_FLOAT32_C(   607.02),
                         SIMDE_FLOAT32_C(   588.25), SIMDE_FLOAT32_C(  -430.65), SIMDE_FLOAT32_C(  -379.22), SIMDE_FLOAT32_C(    62.66)),
      UINT16_C(21184),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(   745.31), SIMDE_FLOAT32_C(   528.47), SIMDE_FLOAT32_C(   260.56), SIMDE_FLOAT32_C(   756.92),
                         SIMDE_FLOAT32_C(  -237.78), SIMDE_FLOAT32_C(   890.33), SIMDE_FLOAT32_C(  -276.66), SIMDE_FLOAT32_C(  -845.25),
                         SIMDE_FLOAT32_C(    73.01), SIMDE_FLOAT32_C(  -169.10), SIMDE_FLOAT32_C(  -390.26), SIMDE_FLOAT32_C(    55.87),
                         SIMDE_FLOAT32_C(   461.32), SIMDE_FLOAT32_C(  -911.03), SIMDE_FLOAT32_C(   362.01), SIMDE_FLOAT32_C(   998.06)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(   177.96), SIMDE_FLOAT32_C(  -105.40), SIMDE_FLOAT32_C(  -516.55), SIMDE_FLOAT32_C(   -62.31),
                         SIMDE_FLOAT32_C(  -757.68), SIMDE_FLOAT32_C(   665.34), SIMDE_FLOAT32_C(   689.63), SIMDE_FLOAT32_C(   938.32),
                         SIMDE_FLOAT32_C(  -408.00), SIMDE_FLOAT32_C(   998.26), SIMDE_FLOAT32_C(  -263.70), SIMDE_FLOAT32_C(   807.54),
                         SIMDE_FLOAT32_C(   485.72), SIMDE_FLOAT32_C(   -74.68), SIMDE_FLOAT32_C(   725.36), SIMDE_FLOAT32_C(   301.00)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(  -717.43), SIMDE_FLOAT32_C(   633.87), SIMDE_FLOAT32_C(  -776.64), SIMDE_FLOAT32_C(   819.23),
                         SIMDE_FLOAT32_C(   462.38), SIMDE_FLOAT32_C(   941.52), SIMDE_FLOAT32_C(  -966.29), SIMDE_FLOAT32_C(   772.92),
                         SIMDE_FLOAT32_C(   481.01), SIMDE_FLOAT32_C( -1167.36), SIMDE_FLOAT32_C(  -770.79), SIMDE_FLOAT32_C(   607.02),
                         SIMDE_FLOAT32_C(   588.25), SIMDE_FLOAT32_C(  -430.65), SIMDE_FLOAT32_C(  -379.22), SIMDE_FLOAT32_C(    62.66)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m512 r = simde_mm512_mask_sub_ps(test_vec[i].src, test_vec[i].k, test_vec[i].a, test_vec[i].b);
    simde_assert_m512_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm512_mask_sub_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__m512d src;
    simde__mmask8 k;
    simde__m512d a;
    simde__m512d b;
    simde__m512d r;
  } test_vec[8] = {
    { simde_mm512_set_pd(SIMDE_FLOAT64_C( -621.09), SIMDE_FLOAT64_C(  350.18),
                         SIMDE_FLOAT64_C(  873.40), SIMDE_FLOAT64_C( -136.67),
                         SIMDE_FLOAT64_C( -484.90), SIMDE_FLOAT64_C(  672.37),
                         SIMDE_FLOAT64_C( -983.97), SIMDE_FLOAT64_C( -747.18)),
      UINT8_C(213),
      simde_mm512_set_pd(SIMDE_FLOAT64_C( -615.22), SIMDE_FLOAT64_C(  861.93),
                         SIMDE_FLOAT64_C(  -99.63), SIMDE_FLOAT64_C( -760.72),
                         SIMDE_FLOAT64_C(  803.54), SIMDE_FLOAT64_C( -811.65),
                         SIMDE_FLOAT64_C( -888.48), SIMDE_FLOAT64_C(  353.19)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(  451.54), SIMDE_FLOAT64_C(  490.96),
                         SIMDE_FLOAT64_C( -563.07), SIMDE_FLOAT64_C( -968.95),
                         SIMDE_FLOAT64_C( -964.80), SIMDE_FLOAT64_C( -259.48),
                         SIMDE_FLOAT64_C(  -97.31), SIMDE_FLOAT64_C(  696.26)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(-1066.76), SIMDE_FLOAT64_C(  370.97),
                         SIMDE_FLOAT64_C(  873.40), SIMDE_FLOAT64_C(  208.23),
                         SIMDE_FLOAT64_C( -484.90), SIMDE_FLOAT64_C( -552.17),
                         SIMDE_FLOAT64_C( -983.97), SIMDE_FLOAT64_C( -343.07)) },
    { simde_mm512_set_pd(SIMDE_FLOAT64_C(  956.74), SIMDE_FLOAT64_C(  507.70),
                         SIMDE_FLOAT64_C(  525.25), SIMDE_FLOAT64_C( -653.24),
                         SIMDE_FLOAT64_C( -748.66), SIMDE_FLOAT64_C(  738.72),
                         SIMDE_FLOAT64_C(  584.29), SIMDE_FLOAT64_C( -344.89)),
      UINT8_C(200),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(  -70.99), SIMDE_FLOAT64_C( -712.48),
                         SIMDE_FLOAT64_C(  721.37), SIMDE_FLOAT64_C(  290.11),
                         SIMDE_FLOAT64_C(  739.65), SIMDE_FLOAT64_C(  378.13),
                         SIMDE_FLOAT64_C(  523.23), SIMDE_FLOAT64_C(  338.41)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C( -243.21), SIMDE_FLOAT64_C(   71.87),
                         SIMDE_FLOAT64_C(   81.06), SIMDE_FLOAT64_C(  409.05),
                         SIMDE_FLOAT64_C( -595.58), SIMDE_FLOAT64_C(  278.33),
                         SIMDE_FLOAT64_C( -484.02), SIMDE_FLOAT64_C( -861.59)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(  172.22), SIMDE_FLOAT64_C( -784.35),
                         SIMDE_FLOAT64_C(  525.25), SIMDE_FLOAT64_C( -653.24),
                         SIMDE_FLOAT64_C( 1335.23), SIMDE_FLOAT64_C(  738.72),
                         SIMDE_FLOAT64_C(  584.29), SIMDE_FLOAT64_C( -344.89)) },
    { simde_mm512_set_pd(SIMDE_FLOAT64_C(  475.39), SIMDE_FLOAT64_C(  345.93),
                         SIMDE_FLOAT64_C(  233.76), SIMDE_FLOAT64_C( -401.11),
                         SIMDE_FLOAT64_C( -964.57), SIMDE_FLOAT64_C(  939.13),
                         SIMDE_FLOAT64_C( -392.63), SIMDE_FLOAT64_C( -585.02)),
      UINT8_C( 75),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(  496.11), SIMDE_FLOAT64_C( -235.94),
                         SIMDE_FLOAT64_C( -715.35), SIMDE_FLOAT64_C(  338.71),
                         SIMDE_FLOAT64_C( -776.11), SIMDE_FLOAT64_C(  941.96),
                         SIMDE_FLOAT64_C(   76.10), SIMDE_FLOAT64_C( -188.31)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(  824.70), SIMDE_FLOAT64_C( -886.45),
                         SIMDE_FLOAT64_C(  497.17), SIMDE_FLOAT64_C( -965.13),
                         SIMDE_FLOAT64_C( -601.99), SIMDE_FLOAT64_C( -657.07),
                         SIMDE_FLOAT64_C(  201.36), SIMDE_FLOAT64_C( -807.98)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(  475.39), SIMDE_FLOAT64_C(  650.51),
                         SIMDE_FLOAT64_C(  233.76), SIMDE_FLOAT64_C( -401.11),
                         SIMDE_FLOAT64_C( -174.12), SIMDE_FLOAT64_C(  939.13),
                         SIMDE_FLOAT64_C( -125.26), SIMDE_FLOAT64_C(  619.67)) },
    { simde_mm512_set_pd(SIMDE_FLOAT64_C( -246.72), SIMDE_FLOAT64_C( -493.17),
                         SIMDE_FLOAT64_C( -501.93), SIMDE_FLOAT64_C(  -95.50),
                         SIMDE_FLOAT64_C(  754.55), SIMDE_FLOAT64_C( -990.48),
                         SIMDE_FLOAT64_C( -396.36), SIMDE_FLOAT64_C( -466.97)),
      UINT8_C( 69),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(  601.28), SIMDE_FLOAT64_C( -873.85),
                         SIMDE_FLOAT64_C( -689.96), SIMDE_FLOAT64_C(   31.77),
                         SIMDE_FLOAT64_C(  -97.11), SIMDE_FLOAT64_C(  971.94),
                         SIMDE_FLOAT64_C(  389.02), SIMDE_FLOAT64_C( -650.79)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(  136.61), SIMDE_FLOAT64_C(  436.94),
                         SIMDE_FLOAT64_C( -777.02), SIMDE_FLOAT64_C(  166.29),
                         SIMDE_FLOAT64_C( -377.75), SIMDE_FLOAT64_C(   71.16),
                         SIMDE_FLOAT64_C(  481.01), SIMDE_FLOAT64_C( -926.81)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C( -246.72), SIMDE_FLOAT64_C(-1310.79),
                         SIMDE_FLOAT64_C( -501.93), SIMDE_FLOAT64_C(  -95.50),
                         SIMDE_FLOAT64_C(  754.55), SIMDE_FLOAT64_C(  900.78),
                         SIMDE_FLOAT64_C( -396.36), SIMDE_FLOAT64_C(  276.02)) },
    { simde_mm512_set_pd(SIMDE_FLOAT64_C( -389.46), SIMDE_FLOAT64_C(   -8.03),
                         SIMDE_FLOAT64_C( -523.51), SIMDE_FLOAT64_C(  466.89),
                         SIMDE_FLOAT64_C(  698.90), SIMDE_FLOAT64_C( -346.04),
                         SIMDE_FLOAT64_C( -734.67), SIMDE_FLOAT64_C(  404.34)),
      UINT8_C(100),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(  989.13), SIMDE_FLOAT64_C(  228.14),
                         SIMDE_FLOAT64_C(  840.94), SIMDE_FLOAT64_C( -718.83),
                         SIMDE_FLOAT64_C(  274.95), SIMDE_FLOAT64_C(  -99.21),
                         SIMDE_FLOAT64_C(   84.76), SIMDE_FLOAT64_C( -295.84)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C( -956.22), SIMDE_FLOAT64_C(  564.94),
                         SIMDE_FLOAT64_C(  -97.16), SIMDE_FLOAT64_C( -407.99),
                         SIMDE_FLOAT64_C(  352.62), SIMDE_FLOAT64_C(  244.25),
                         SIMDE_FLOAT64_C(   43.92), SIMDE_FLOAT64_C(  624.69)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C( -389.46), SIMDE_FLOAT64_C( -336.80),
                         SIMDE_FLOAT64_C(  938.10), SIMDE_FLOAT64_C(  466.89),
                         SIMDE_FLOAT64_C(  698.90), SIMDE_FLOAT64_C( -343.46),
                         SIMDE_FLOAT64_C( -734.67), SIMDE_FLOAT64_C(  404.34)) },
    { simde_mm512_set_pd(SIMDE_FLOAT64_C( -571.96), SIMDE_FLOAT64_C(   40.27),
                         SIMDE_FLOAT64_C(  676.69), SIMDE_FLOAT64_C( -150.37),
                         SIMDE_FLOAT64_C(  945.34), SIMDE_FLOAT64_C(   75.83),
                         SIMDE_FLOAT64_C(   64.75), SIMDE_FLOAT64_C(  239.06)),
      UINT8_C(209),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(  792.47), SIMDE_FLOAT64_C( -265.19),
                         SIMDE_FLOAT64_C( -768.95), SIMDE_FLOAT64_C(  515.15),
                         SIMDE_FLOAT64_C(  350.59), SIMDE_FLOAT64_C(  422.68),
                         SIMDE_FLOAT64_C(  582.99), SIMDE_FLOAT64_C( -985.50)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(   12.38), SIMDE_FLOAT64_C(  -71.80),
                         SIMDE_FLOAT64_C(  363.01), SIMDE_FLOAT64_C( -195.65),
                         SIMDE_FLOAT64_C(  967.47), SIMDE_FLOAT64_C(   -4.13),
                         SIMDE_FLOAT64_C( -478.81), SIMDE_FLOAT64_C(  909.10)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(  780.09), SIMDE_FLOAT64_C( -193.39),
                         SIMDE_FLOAT64_C(  676.69), SIMDE_FLOAT64_C(  710.80),
                         SIMDE_FLOAT64_C(  945.34), SIMDE_FLOAT64_C(   75.83),
                         SIMDE_FLOAT64_C(   64.75), SIMDE_FLOAT64_C(-1894.60)) },
    { simde_mm512_set_pd(SIMDE_FLOAT64_C( -879.88), SIMDE_FLOAT64_C( -687.95),
                         SIMDE_FLOAT64_C( -892.89), SIMDE_FLOAT64_C( -642.85),
                         SIMDE_FLOAT64_C(  533.08), SIMDE_FLOAT64_C(  898.29),
                         SIMDE_FLOAT64_C(  -29.99), SIMDE_FLOAT64_C(    5.58)),
      UINT8_C(186),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(  649.80), SIMDE_FLOAT64_C( -257.91),
                         SIMDE_FLOAT64_C(  356.56), SIMDE_FLOAT64_C(  567.70),
                         SIMDE_FLOAT64_C(  -80.43), SIMDE_FLOAT64_C( -499.15),
                         SIMDE_FLOAT64_C( -866.12), SIMDE_FLOAT64_C(  639.40)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(  702.45), SIMDE_FLOAT64_C(  464.79),
                         SIMDE_FLOAT64_C(  387.80), SIMDE_FLOAT64_C( -528.10),
                         SIMDE_FLOAT64_C( -409.82), SIMDE_FLOAT64_C( -696.40),
                         SIMDE_FLOAT64_C(  455.43), SIMDE_FLOAT64_C(  856.81)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(  -52.65), SIMDE_FLOAT64_C( -687.95),
                         SIMDE_FLOAT64_C(  -31.24), SIMDE_FLOAT64_C( 1095.80),
                         SIMDE_FLOAT64_C(  329.39), SIMDE_FLOAT64_C(  898.29),
                         SIMDE_FLOAT64_C(-1321.55), SIMDE_FLOAT64_C(    5.58)) },
    { simde_mm512_set_pd(SIMDE_FLOAT64_C( -750.95), SIMDE_FLOAT64_C(  203.46),
                         SIMDE_FLOAT64_C(  194.87), SIMDE_FLOAT64_C(  667.81),
                         SIMDE_FLOAT64_C( -258.76), SIMDE_FLOAT64_C(  897.89),
                         SIMDE_FLOAT64_C(  571.10), SIMDE_FLOAT64_C( -320.96)),
      UINT8_C( 56),
      simde_mm512_set_pd(SIMDE_FLOAT64_C( -938.69), SIMDE_FLOAT64_C(   74.05),
                         SIMDE_FLOAT64_C( -981.48), SIMDE_FLOAT64_C( -656.78),
                         SIMDE_FLOAT64_C( -794.37), SIMDE_FLOAT64_C(  177.36),
                         SIMDE_FLOAT64_C(  380.50), SIMDE_FLOAT64_C(  812.91)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(  -10.37), SIMDE_FLOAT64_C( -894.99),
                         SIMDE_FLOAT64_C( -148.09), SIMDE_FLOAT64_C(  314.75),
                         SIMDE_FLOAT64_C( -740.28), SIMDE_FLOAT64_C( -372.00),
                         SIMDE_FLOAT64_C( -357.36), SIMDE_FLOAT64_C( -791.79)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C( -750.95), SIMDE_FLOAT64_C(  203.46),
                         SIMDE_FLOAT64_C( -833.39), SIMDE_FLOAT64_C( -971.53),
                         SIMDE_FLOAT64_C(  -54.09), SIMDE_FLOAT64_C(  897.89),
                         SIMDE_FLOAT64_C(  571.10), SIMDE_FLOAT64_C( -320.96)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m512d r = simde_mm512_mask_sub_pd(test_vec[i].src, test_vec[i].k, test_vec[i].a, test_vec[i].b);
    simde_assert_m512d_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm512_maskz_sub_epi32(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__mmask16 k;
    simde__m512i a;
    simde__m512i b;
    simde__m512i r;
  } test_vec[8] = {
    { UINT16_C(42308),
      simde_mm512_set_epi32(INT32_C( 1724059665), INT32_C(-1181331137), INT32_C( -956878955), INT32_C( 1254662027),
                            INT32_C( -334196329), INT32_C( -462422656), INT32_C(  391895544), INT32_C( 1081692585),
                            INT32_C(-1420053828), INT32_C(-1016697350), INT32_C( 1995028549), INT32_C(-2003231670),
                            INT32_C( 1672190791), INT32_C(  255109958), INT32_C(-2019884289), INT32_C(-1398510440)),
      simde_mm512_set_epi32(INT32_C( 1758500044), INT32_C(  727344602), INT32_C(-1303831643), INT32_C( 1021495274),
                            INT32_C(-2113209677), INT32_C( 1628670789), INT32_C(  684532718), INT32_C( 1920084108),
                            INT32_C( -516238646), INT32_C( 1525557846), INT32_C( 1058541430), INT32_C(  232836803),
                            INT32_C( 1824295576), INT32_C(-1334166784), INT32_C(-1267999587), INT32_C( 1992895333)),
      simde_mm512_set_epi32(INT32_C(  -34440379), INT32_C(          0), INT32_C(  346952688), INT32_C(          0),
                            INT32_C(          0), INT32_C(-2091093445), INT32_C(          0), INT32_C( -838391523),
                            INT32_C(          0), INT32_C( 1752712100), INT32_C(          0), INT32_C(          0),
                            INT32_C(          0), INT32_C( 1589276742), INT32_C(          0), INT32_C(          0)) },
    { UINT16_C(57112),
      simde_mm512_set_epi32(INT32_C( 1427084198), INT32_C(  800677318), INT32_C(-1624555826), INT32_C( -189169736),
                            INT32_C( -500462405), INT32_C(  393027187), INT32_C( -215642095), INT32_C( 1795082661),
                            INT32_C(-1120274966), INT32_C( 1416315501), INT32_C( 2071781830), INT32_C( 1981287236),
                            INT32_C( 1895228887), INT32_C( -102536112), INT32_C(-1592734830), INT32_C(-1858725491)),
      simde_mm512_set_epi32(INT32_C( -450919787), INT32_C( 1299130560), INT32_C( 1762509692), INT32_C(  310818231),
                            INT32_C( -225659966), INT32_C(-1193662266), INT32_C(  959080993), INT32_C(  -80526553),
                            INT32_C( -695376176), INT32_C(  -26080833), INT32_C(  542712435), INT32_C( 1266358760),
                            INT32_C(  181254235), INT32_C(-2068678559), INT32_C( 1863289430), INT32_C( -269529302)),
      simde_mm512_set_epi32(INT32_C( 1878003985), INT32_C( -498453242), INT32_C(          0), INT32_C( -499987967),
                            INT32_C( -274802439), INT32_C( 1586689453), INT32_C(-1174723088), INT32_C( 1875609214),
                            INT32_C(          0), INT32_C(          0), INT32_C(          0), INT32_C(  714928476),
                            INT32_C( 1713974652), INT32_C(          0), INT32_C(          0), INT32_C(          0)) },
    { UINT16_C(45985),
      simde_mm512_set_epi32(INT32_C(-1997599226), INT32_C( 1542236612), INT32_C(  969579913), INT32_C(-1642088433),
                            INT32_C(  579114801), INT32_C(-1194258935), INT32_C(-1422143462), INT32_C( 1748279001),
                            INT32_C(-1953627340), INT32_C( 1674288033), INT32_C(  717963559), INT32_C(   34905906),
                            INT32_C( -149768860), INT32_C( 1400155142), INT32_C( 1757125654), INT32_C(-1787496119)),
      simde_mm512_set_epi32(INT32_C(   11674598), INT32_C( 1849959427), INT32_C(-1203439394), INT32_C( -261642074),
                            INT32_C(-2062167113), INT32_C( 1504166558), INT32_C( -111161554), INT32_C( -367200138),
                            INT32_C( 1040642836), INT32_C(  378025736), INT32_C( 1031970925), INT32_C(-1474878922),
                            INT32_C(-1560910320), INT32_C( 1296215099), INT32_C(-1595601438), INT32_C( -126839035)),
      simde_mm512_set_epi32(INT32_C(-2009273824), INT32_C(          0), INT32_C(-2121947989), INT32_C(-1380446359),
                            INT32_C(          0), INT32_C(          0), INT32_C(-1310981908), INT32_C( 2115479139),
                            INT32_C( 1300697120), INT32_C(          0), INT32_C( -314007366), INT32_C(          0),
                            INT32_C(          0), INT32_C(          0), INT32_C(          0), INT32_C(-1660657084)) },
    { UINT16_C(21153),
      simde_mm512_set_epi32(INT32_C( -788633826), INT32_C( 1642420282), INT32_C(  723895008), INT32_C(  207632598),
                            INT32_C(-2079938207), INT32_C( 1754477079), INT32_C( 1798135551), INT32_C(   23449555),
                            INT32_C( -151172429), INT32_C(  677778908), INT32_C(   90905464), INT32_C( 1354586615),
                            INT32_C(-1670436324), INT32_C( -505523122), INT32_C(-1519449460), INT32_C(-1685310582)),
      simde_mm512_set_epi32(INT32_C(  799456687), INT32_C(-1358763208), INT32_C(  737687311), INT32_C( 1515407453),
                            INT32_C(  439395016), INT32_C(  -78627541), INT32_C(-1674155016), INT32_C( 1063201251),
                            INT32_C( -686363587), INT32_C(  742525264), INT32_C(  701319512), INT32_C(   24989685),
                            INT32_C( -301118736), INT32_C( -785334161), INT32_C(-1489992316), INT32_C(  306022421)),
      simde_mm512_set_epi32(INT32_C(          0), INT32_C(-1293783806), INT32_C(          0), INT32_C(-1307774855),
                            INT32_C(          0), INT32_C(          0), INT32_C( -822676729), INT32_C(          0),
                            INT32_C(  535191158), INT32_C(          0), INT32_C( -610414048), INT32_C(          0),
                            INT32_C(          0), INT32_C(          0), INT32_C(          0), INT32_C(-1991333003)) },
    { UINT16_C(12143),
      simde_mm512_set_epi32(INT32_C( -246629264), INT32_C(  633039851), INT32_C( 1692158737), INT32_C( 1115946871),
                            INT32_C(  309808098), INT32_C( 1170830326), INT32_C( 1350105561), INT32_C(-1022199838),
                            INT32_C(  654046756), INT32_C( 1807741640), INT32_C(  224020334), INT32_C( 1191767429),
                            INT32_C( -990326759), INT32_C(   85294451), INT32_C( -252749112), INT32_C(-1788577569)),
      simde_mm512_set_epi32(INT32_C( 1174570840), INT32_C(  974062633), INT32_C(  983904988), INT32_C( 1803536893),
                            INT32_C( 1164598462), INT32_C( 1777437641), INT32_C(-1475760323), INT32_C( 1833217111),
                            INT32_C( 2013842885), INT32_C(  720911006), INT32_C(-1253744600), INT32_C( 1820529236),
                            INT32_C( -314819268), INT32_C(-1926268921), INT32_C( 2108913431), INT32_C( 1190393502)),
      simde_mm512_set_epi32(INT32_C(          0), INT32_C(          0), INT32_C(  708253749), INT32_C(          0),
                            INT32_C( -854790364), INT32_C( -606607315), INT32_C(-1469101412), INT32_C( 1439550347),
                            INT32_C(          0), INT32_C( 1086830634), INT32_C( 1477764934), INT32_C(          0),
                            INT32_C( -675507491), INT32_C( 2011563372), INT32_C( 1933304753), INT32_C( 1315996225)) },
    { UINT16_C(26005),
      simde_mm512_set_epi32(INT32_C( 1813548464), INT32_C( -757290941), INT32_C( 1295512986), INT32_C( 1291803276),
                            INT32_C( 2032260868), INT32_C(  316165049), INT32_C( 1037644878), INT32_C(-1728213057),
                            INT32_C(  231750243), INT32_C( 1220512969), INT32_C(-1711918828), INT32_C( 1618345779),
                            INT32_C( 1444876028), INT32_C( 1881924556), INT32_C(-1672732354), INT32_C(-1497726182)),
      simde_mm512_set_epi32(INT32_C(-2042300804), INT32_C( -199486597), INT32_C( -290224964), INT32_C(  -95049939),
                            INT32_C(  242789967), INT32_C(-2042388049), INT32_C(-1526333573), INT32_C( -943172088),
                            INT32_C(-1987449183), INT32_C( -802616226), INT32_C(  743071941), INT32_C(  -28537087),
                            INT32_C(-2054489846), INT32_C( 2118922267), INT32_C( 1876700525), INT32_C(  356823736)),
      simde_mm512_set_epi32(INT32_C(          0), INT32_C( -557804344), INT32_C( 1585737950), INT32_C(          0),
                            INT32_C(          0), INT32_C(-1936414198), INT32_C(          0), INT32_C( -785040969),
                            INT32_C(-2075767870), INT32_C(          0), INT32_C(          0), INT32_C( 1646882866),
                            INT32_C(          0), INT32_C( -236997711), INT32_C(          0), INT32_C(-1854549918)) },
    { UINT16_C(22214),
      simde_mm512_set_epi32(INT32_C( 1255503250), INT32_C(  603134448), INT32_C( 1664652192), INT32_C( -343768171),
                            INT32_C(-1798248429), INT32_C(-1446513257), INT32_C(  127732840), INT32_C(-1651163018),
                            INT32_C(  741467989), INT32_C(  859412594), INT32_C(  472043835), INT32_C( 1771260096),
                            INT32_C(-1144930983), INT32_C(  236371534), INT32_C( 1323254991), INT32_C( 1564105257)),
      simde_mm512_set_epi32(INT32_C(  438781482), INT32_C( 1278794690), INT32_C(-1026818029), INT32_C( 2082034838),
                            INT32_C(  -20030271), INT32_C( -682181759), INT32_C( 1547951192), INT32_C(  690567023),
                            INT32_C( -270117367), INT32_C( -771535010), INT32_C(  916148853), INT32_C( 1687091511),
                            INT32_C( -535908173), INT32_C( -185822843), INT32_C( -711684672), INT32_C( -424619293)),
      simde_mm512_set_epi32(INT32_C(          0), INT32_C( -675660242), INT32_C(          0), INT32_C( 1869164287),
                            INT32_C(          0), INT32_C( -764331498), INT32_C(-1420218352), INT32_C(          0),
                            INT32_C( 1011585356), INT32_C( 1630947604), INT32_C(          0), INT32_C(          0),
                            INT32_C(          0), INT32_C(  422194377), INT32_C( 2034939663), INT32_C(          0)) },
    { UINT16_C(35591),
      simde_mm512_set_epi32(INT32_C( 1513047065), INT32_C( -104652818), INT32_C( 1564491564), INT32_C(  -98950215),
                            INT32_C(  631827200), INT32_C( 1322294700), INT32_C(  436005702), INT32_C( 1825722103),
                            INT32_C( 2013933934), INT32_C( -532774987), INT32_C( 1616518393), INT32_C(  803856137),
                            INT32_C(-1663534883), INT32_C(-2021437227), INT32_C(-1476004613), INT32_C( -899510926)),
      simde_mm512_set_epi32(INT32_C( -910624932), INT32_C(  209536966), INT32_C(-1923748050), INT32_C(-1520303619),
                            INT32_C( -387141989), INT32_C(  959069600), INT32_C( 1208361371), INT32_C(-1838273096),
                            INT32_C(-1330134815), INT32_C(  126713528), INT32_C( -150313435), INT32_C(-1972942202),
                            INT32_C( 1666269875), INT32_C(-1750237431), INT32_C(  950405946), INT32_C( -725753907)),
      simde_mm512_set_epi32(INT32_C(-1871295299), INT32_C(          0), INT32_C(          0), INT32_C(          0),
                            INT32_C( 1018969189), INT32_C(          0), INT32_C( -772355669), INT32_C( -630972097),
                            INT32_C(          0), INT32_C(          0), INT32_C(          0), INT32_C(          0),
                            INT32_C(          0), INT32_C( -271199796), INT32_C( 1868556737), INT32_C( -173757019)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m512i r = simde_mm512_maskz_sub_epi32(test_vec[i].k, test_vec[i].a, test_vec[i].b);
    simde_assert_m512i_i32(r, ==, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm512_maskz_sub_epi64(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__mmask8 k;
    simde__m512i a;
    simde__m512i b;
    simde__m512i r;
  } test_vec[8] = {
    { UINT8_C( 68),
      simde_mm512_set_epi64(INT64_C(-5073778595823407211), INT64_C( 5388732377458839959),
                            INT64_C(-1986090184057562632), INT64_C( 4645834279775613628),
                            INT64_C(-4366681866184837051), INT64_C(-8603814507289273529),
                            INT64_C( 1095688928769016575), INT64_C(-6006556600469720682)),
      simde_mm512_set_epi64(INT64_C( 3123921281503271845), INT64_C( 4387288797030316723),
                            INT64_C( 6995087775390049262), INT64_C( 8246698453208060618),
                            INT64_C( 6552221057784745846), INT64_C( 1000026456014490264),
                            INT64_C(-5730202701662528355), INT64_C( 8559420281310089233)),
      simde_mm512_set_epi64(INT64_C(                   0), INT64_C( 1001443580428523236),
                            INT64_C(                   0), INT64_C(                   0),
                            INT64_C(                   0), INT64_C( 8842903110405787823),
                            INT64_C(                   0), INT64_C(                   0)) },
    { UINT8_C(204),
      simde_mm512_set_epi64(INT64_C(-6977414139090468936), INT64_C(-2149469661959479693),
                            INT64_C( -926175743870842459), INT64_C(-4811544340081196435),
                            INT64_C( 8898235206278318916), INT64_C( 8139946092291910736),
                            INT64_C(-6840744003613877875), INT64_C( 6930156028979502872)),
      simde_mm512_set_epi64(INT64_C( 7569921486333851063), INT64_C( -969202170885166906),
                            INT64_C( 4119221503364645671), INT64_C(-2986617930068653633),
                            INT64_C( 2330932160723884520), INT64_C(  778481013812787297),
                            INT64_C( 8002767168857919274), INT64_C( 6129279959849065926)),
      simde_mm512_set_epi64(INT64_C( 3899408448285231617), INT64_C(-1180267491074312787),
                            INT64_C(                   0), INT64_C(                   0),
                            INT64_C( 6567303045554434396), INT64_C( 7361465078479123439),
                            INT64_C(                   0), INT64_C(                   0)) },
    { UINT8_C(192),
      simde_mm512_set_epi64(INT64_C(-7052716116295772367), INT64_C(-5129303065907965926),
                            INT64_C( 7508801135919891252), INT64_C( 7191012346537132327),
                            INT64_C(  149919728852448612), INT64_C( 6013620545973361686),
                            INT64_C(-7677237369544501225), INT64_C(-4708878852454120811)),
      simde_mm512_set_epi64(INT64_C(-1123744148854811721), INT64_C( 6460346178530692910),
                            INT64_C(-1577112582756044012), INT64_C( 1623608174198300781),
                            INT64_C(-6334556732815677936), INT64_C( 5567201461485768162),
                            INT64_C( -544769504883831290), INT64_C( 6623855812203421065)),
      simde_mm512_set_epi64(INT64_C(-5928971967440960646), INT64_C( 6857094829270892780),
                            INT64_C(                   0), INT64_C(                   0),
                            INT64_C(                   0), INT64_C(                   0),
                            INT64_C(                   0), INT64_C(                   0)) },
    { UINT8_C(222),
      simde_mm512_set_epi64(INT64_C(-8933266575011401193), INT64_C( 7722933385343389651),
                            INT64_C( -649280637934103076), INT64_C(  390435996262291959),
                            INT64_C(-7174469377841015730), INT64_C(-6525985736015203446),
                            INT64_C( 8306044009918255777), INT64_C(   50142018453906435)),
      simde_mm512_set_epi64(INT64_C( 1887187227961736491), INT64_C(-7190441041091155485),
                            INT64_C(-2947909158587725488), INT64_C( 3012144368111669237),
                            INT64_C(-1293295119823224721), INT64_C(-6399468268205275115),
                            INT64_C(-3387156489546934214), INT64_C( 3109105385305290966)),
      simde_mm512_set_epi64(INT64_C( 7626290270736413932), INT64_C(-3533369647275006480),
                            INT64_C(                   0), INT64_C(-2621708371849377278),
                            INT64_C(-5881174258017791009), INT64_C( -126517467809928331),
                            INT64_C(-6753543574244361625), INT64_C(                   0)) },
    { UINT8_C( 93),
      simde_mm512_set_epi64(INT64_C( 5028677960685124057), INT64_C(-4390314873532451292),
                            INT64_C( 7764191223641425774), INT64_C( 5118602135297642521),
                            INT64_C(  366336881617492680), INT64_C(-7681882161808553379),
                            INT64_C( 1609244596442152367), INT64_C(-5835843540630358257)),
      simde_mm512_set_epi64(INT64_C( 7634036541593595709), INT64_C( 7873607540226444741),
                            INT64_C( 3096289197137682472), INT64_C( 7819113534012013884),
                            INT64_C(-8273262016887294185), INT64_C( 5112701164509248624),
                            INT64_C( 2718885458801871633), INT64_C( 4792955315328338914)),
      simde_mm512_set_epi64(INT64_C(                   0), INT64_C( 6182821659950655583),
                            INT64_C(                   0), INT64_C(-2700511398714371363),
                            INT64_C( 8639598898504786865), INT64_C( 5652160747391749613),
                            INT64_C(                   0), INT64_C( 7817945217750854445)) },
    { UINT8_C(190),
      simde_mm512_set_epi64(INT64_C( 4456650818438664127), INT64_C(  995359715745565897),
                            INT64_C(-7352635378048303309), INT64_C( 6205695288916304844),
                            INT64_C(-7184330752593853670), INT64_C(  997194843856987541),
                            INT64_C( 5044743345609311273), INT64_C( 4225839747634809341)),
      simde_mm512_set_epi64(INT64_C(-6555552775470033400), INT64_C(-8536029239954568098),
                            INT64_C( 3191469689436671745), INT64_C(-8823966696415154149),
                            INT64_C( 8060367379617854136), INT64_C( 7789131346128709699),
                            INT64_C( 5564185907705109132), INT64_C( 8728493965316737977)),
      simde_mm512_set_epi64(INT64_C(-7434540479800854089), INT64_C(                   0),
                            INT64_C( 7902639006224576562), INT64_C(-3417082088378092623),
                            INT64_C( 3202045941497843810), INT64_C(-6791936502271722158),
                            INT64_C( -519442562095797859), INT64_C(                   0)) },
    { UINT8_C(175),
      simde_mm512_set_epi64(INT64_C(-7091691161933191339), INT64_C( 3691148985472569659),
                            INT64_C( 7607504188179856729), INT64_C( 1015208009558607055),
                            INT64_C( 6717780929629073882), INT64_C( 2140431133564008060),
                            INT64_C( -856788406100589380), INT64_C( -408236379249004977)),
      simde_mm512_set_epi64(INT64_C( 2965962783505929737), INT64_C(-3313717634752884107),
                            INT64_C( 7246002868863283379), INT64_C( -798103029951459904),
                            INT64_C(-1823725975430138478), INT64_C( 2590442730915664800),
                            INT64_C(-1476473049354016749), INT64_C(-6212727131917710232)),
      simde_mm512_set_epi64(INT64_C( 8389090128270430540), INT64_C(                   0),
                            INT64_C(  361501319316573350), INT64_C(                   0),
                            INT64_C( 8541506905059212360), INT64_C( -450011597351656740),
                            INT64_C(  619684643253427369), INT64_C( 5804490752668705255)) },
    { UINT8_C( 88),
      simde_mm512_set_epi64(INT64_C( 8649780386596814773), INT64_C( 6942893632121331465),
                            INT64_C(-7144827915966656299), INT64_C(-6339391538184680078),
                            INT64_C( 7515152281876400903), INT64_C( 1884552116559207362),
                            INT64_C(-4410149851416144746), INT64_C(  -86029355262231679)),
      simde_mm512_set_epi64(INT64_C(-5712885529569296712), INT64_C( -645591285152396666),
                            INT64_C( 7156574621979737865), INT64_C( 4081962459563155405),
                            INT64_C( 6498487665674100718), INT64_C( 6719440106443908025),
                            INT64_C( 2713677162045545900), INT64_C( 1872630232785243895)),
      simde_mm512_set_epi64(INT64_C(                   0), INT64_C( 7588484917273728131),
                            INT64_C(                   0), INT64_C( 8025390075961716133),
                            INT64_C( 1016664616202300185), INT64_C(                   0),
                            INT64_C(                   0), INT64_C(                   0)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m512i r = simde_mm512_maskz_sub_epi64(test_vec[i].k, test_vec[i].a, test_vec[i].b);
    simde_assert_m512i_i64(r, ==, test_vec[i].r);
  }

  return 0;
}

static int
test_simde_mm512_maskz_sub_ps(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__mmask16 k;
    simde__m512 a;
    simde__m512 b;
    simde__m512 r;
  } test_vec[8] = {
    { UINT16_C(26074),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(  -524.33), SIMDE_FLOAT32_C(  -241.59), SIMDE_FLOAT32_C(  -105.89), SIMDE_FLOAT32_C(  -289.61),
                         SIMDE_FLOAT32_C(  -891.58), SIMDE_FLOAT32_C(   378.73), SIMDE_FLOAT32_C(   -71.99), SIMDE_FLOAT32_C(   449.90),
                         SIMDE_FLOAT32_C(  -415.75), SIMDE_FLOAT32_C(   784.67), SIMDE_FLOAT32_C(  -496.30), SIMDE_FLOAT32_C(   526.56),
                         SIMDE_FLOAT32_C(    67.17), SIMDE_FLOAT32_C(  -881.21), SIMDE_FLOAT32_C(   348.77), SIMDE_FLOAT32_C(   537.04)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(   392.86), SIMDE_FLOAT32_C(    15.96), SIMDE_FLOAT32_C(  -681.24), SIMDE_FLOAT32_C(   759.61),
                         SIMDE_FLOAT32_C(  -507.08), SIMDE_FLOAT32_C(  -150.50), SIMDE_FLOAT32_C(   409.54), SIMDE_FLOAT32_C(  -197.17),
                         SIMDE_FLOAT32_C(   554.42), SIMDE_FLOAT32_C(   844.38), SIMDE_FLOAT32_C(  -817.51), SIMDE_FLOAT32_C(   338.74),
                         SIMDE_FLOAT32_C(   -70.99), SIMDE_FLOAT32_C(  -221.33), SIMDE_FLOAT32_C(    59.42), SIMDE_FLOAT32_C(   138.47)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -257.55), SIMDE_FLOAT32_C(   575.35), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   529.23), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   647.07),
                         SIMDE_FLOAT32_C(  -970.17), SIMDE_FLOAT32_C(   -59.71), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   187.82),
                         SIMDE_FLOAT32_C(   138.16), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   289.35), SIMDE_FLOAT32_C(     0.00)) },
    { UINT16_C(10432),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(  -855.26), SIMDE_FLOAT32_C(   444.16), SIMDE_FLOAT32_C(   962.50), SIMDE_FLOAT32_C(   987.86),
                         SIMDE_FLOAT32_C(  -410.31), SIMDE_FLOAT32_C(    36.70), SIMDE_FLOAT32_C(   874.49), SIMDE_FLOAT32_C(  -627.16),
                         SIMDE_FLOAT32_C(   911.91), SIMDE_FLOAT32_C(  -816.98), SIMDE_FLOAT32_C(  -164.10), SIMDE_FLOAT32_C(  -340.48),
                         SIMDE_FLOAT32_C(   -77.39), SIMDE_FLOAT32_C(   952.25), SIMDE_FLOAT32_C(   134.46), SIMDE_FLOAT32_C(   698.09)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(  -179.27), SIMDE_FLOAT32_C(   894.92), SIMDE_FLOAT32_C(  -553.39), SIMDE_FLOAT32_C(   676.19),
                         SIMDE_FLOAT32_C(  -747.28), SIMDE_FLOAT32_C(  -915.60), SIMDE_FLOAT32_C(  -132.34), SIMDE_FLOAT32_C(  -335.46),
                         SIMDE_FLOAT32_C(   243.51), SIMDE_FLOAT32_C(   766.95), SIMDE_FLOAT32_C(   899.58), SIMDE_FLOAT32_C(   478.33),
                         SIMDE_FLOAT32_C(   -35.25), SIMDE_FLOAT32_C(  -117.47), SIMDE_FLOAT32_C(   258.33), SIMDE_FLOAT32_C(  -248.63)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  1515.89), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(   336.97), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(   668.40), SIMDE_FLOAT32_C( -1583.93), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00)) },
    { UINT16_C( 9219),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(   878.16), SIMDE_FLOAT32_C(  -299.57), SIMDE_FLOAT32_C(   829.01), SIMDE_FLOAT32_C(  -823.97),
                         SIMDE_FLOAT32_C(   313.21), SIMDE_FLOAT32_C(  -396.40), SIMDE_FLOAT32_C(   940.94), SIMDE_FLOAT32_C(  -281.84),
                         SIMDE_FLOAT32_C(   235.34), SIMDE_FLOAT32_C(   443.88), SIMDE_FLOAT32_C(  -185.89), SIMDE_FLOAT32_C(  -220.35),
                         SIMDE_FLOAT32_C(  -983.75), SIMDE_FLOAT32_C(  -348.00), SIMDE_FLOAT32_C(   167.63), SIMDE_FLOAT32_C(   489.46)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(   439.60), SIMDE_FLOAT32_C(    39.73), SIMDE_FLOAT32_C(   948.24), SIMDE_FLOAT32_C(  -515.41),
                         SIMDE_FLOAT32_C(  -519.45), SIMDE_FLOAT32_C(   273.14), SIMDE_FLOAT32_C(   256.99), SIMDE_FLOAT32_C(    69.80),
                         SIMDE_FLOAT32_C(  -548.50), SIMDE_FLOAT32_C(  -730.33), SIMDE_FLOAT32_C(   337.76), SIMDE_FLOAT32_C(    90.27),
                         SIMDE_FLOAT32_C(  -665.67), SIMDE_FLOAT32_C(   930.26), SIMDE_FLOAT32_C(  -181.77), SIMDE_FLOAT32_C(   530.83)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -119.23), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -669.54), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   349.40), SIMDE_FLOAT32_C(   -41.37)) },
    { UINT16_C(60216),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(  -294.33), SIMDE_FLOAT32_C(   963.39), SIMDE_FLOAT32_C(  -504.91), SIMDE_FLOAT32_C(  -654.23),
                         SIMDE_FLOAT32_C(  -988.36), SIMDE_FLOAT32_C(   634.30), SIMDE_FLOAT32_C(  -857.50), SIMDE_FLOAT32_C(  -235.19),
                         SIMDE_FLOAT32_C(  -903.31), SIMDE_FLOAT32_C(  -183.01), SIMDE_FLOAT32_C(  -989.08), SIMDE_FLOAT32_C(  -684.38),
                         SIMDE_FLOAT32_C(  -369.22), SIMDE_FLOAT32_C(   764.60), SIMDE_FLOAT32_C(   215.22), SIMDE_FLOAT32_C(  -906.73)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(  -656.49), SIMDE_FLOAT32_C(  -795.39), SIMDE_FLOAT32_C(   220.41), SIMDE_FLOAT32_C(   680.39),
                         SIMDE_FLOAT32_C(  -673.42), SIMDE_FLOAT32_C(   859.78), SIMDE_FLOAT32_C(   306.17), SIMDE_FLOAT32_C(   632.76),
                         SIMDE_FLOAT32_C(  -662.91), SIMDE_FLOAT32_C(    31.45), SIMDE_FLOAT32_C(  -162.68), SIMDE_FLOAT32_C(   929.60),
                         SIMDE_FLOAT32_C(  -957.67), SIMDE_FLOAT32_C(   222.14), SIMDE_FLOAT32_C(   292.45), SIMDE_FLOAT32_C(   -99.46)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(   362.16), SIMDE_FLOAT32_C(  1758.78), SIMDE_FLOAT32_C(  -725.32), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(  -314.94), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C( -1163.67), SIMDE_FLOAT32_C(  -867.95),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -826.40), SIMDE_FLOAT32_C( -1613.98),
                         SIMDE_FLOAT32_C(   588.45), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00)) },
    { UINT16_C( 1065),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(  -160.16), SIMDE_FLOAT32_C(  -172.32), SIMDE_FLOAT32_C(  -146.34), SIMDE_FLOAT32_C(  -664.30),
                         SIMDE_FLOAT32_C(  -152.25), SIMDE_FLOAT32_C(   103.01), SIMDE_FLOAT32_C(  -445.68), SIMDE_FLOAT32_C(  -705.22),
                         SIMDE_FLOAT32_C(  -480.35), SIMDE_FLOAT32_C(  -454.79), SIMDE_FLOAT32_C(   524.00), SIMDE_FLOAT32_C(  -158.20),
                         SIMDE_FLOAT32_C(  -445.04), SIMDE_FLOAT32_C(  -960.28), SIMDE_FLOAT32_C(   167.13), SIMDE_FLOAT32_C(  -825.53)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(  -541.83), SIMDE_FLOAT32_C(  -457.69), SIMDE_FLOAT32_C(   312.80), SIMDE_FLOAT32_C(   -62.23),
                         SIMDE_FLOAT32_C(   416.18), SIMDE_FLOAT32_C(   853.40), SIMDE_FLOAT32_C(   -17.96), SIMDE_FLOAT32_C(   885.15),
                         SIMDE_FLOAT32_C(  -212.03), SIMDE_FLOAT32_C(  -855.73), SIMDE_FLOAT32_C(  -371.31), SIMDE_FLOAT32_C(  -695.44),
                         SIMDE_FLOAT32_C(  -895.68), SIMDE_FLOAT32_C(   538.84), SIMDE_FLOAT32_C(   882.30), SIMDE_FLOAT32_C(   585.87)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -750.39), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   895.31), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(   450.64), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C( -1411.40)) },
    { UINT16_C( 4987),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(   955.74), SIMDE_FLOAT32_C(    48.94), SIMDE_FLOAT32_C(   560.80), SIMDE_FLOAT32_C(   626.25),
                         SIMDE_FLOAT32_C(   986.71), SIMDE_FLOAT32_C(   -13.30), SIMDE_FLOAT32_C(  -833.84), SIMDE_FLOAT32_C(   647.36),
                         SIMDE_FLOAT32_C(  -398.46), SIMDE_FLOAT32_C(  -852.77), SIMDE_FLOAT32_C(   195.24), SIMDE_FLOAT32_C(  -431.65),
                         SIMDE_FLOAT32_C(  -246.40), SIMDE_FLOAT32_C(  -123.66), SIMDE_FLOAT32_C(   302.57), SIMDE_FLOAT32_C(  -312.92)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(   864.85), SIMDE_FLOAT32_C(  -886.94), SIMDE_FLOAT32_C(   289.25), SIMDE_FLOAT32_C(    74.52),
                         SIMDE_FLOAT32_C(  -653.98), SIMDE_FLOAT32_C(    43.30), SIMDE_FLOAT32_C(  -126.09), SIMDE_FLOAT32_C(  -155.50),
                         SIMDE_FLOAT32_C(  -396.73), SIMDE_FLOAT32_C(   -53.65), SIMDE_FLOAT32_C(  -516.81), SIMDE_FLOAT32_C(  -892.08),
                         SIMDE_FLOAT32_C(   202.83), SIMDE_FLOAT32_C(  -327.18), SIMDE_FLOAT32_C(   221.07), SIMDE_FLOAT32_C(  -891.88)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   551.73),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -707.75), SIMDE_FLOAT32_C(   802.86),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -799.12), SIMDE_FLOAT32_C(   712.05), SIMDE_FLOAT32_C(   460.43),
                         SIMDE_FLOAT32_C(  -449.23), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(    81.50), SIMDE_FLOAT32_C(   578.96)) },
    { UINT16_C(56258),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(   -30.48), SIMDE_FLOAT32_C(   682.33), SIMDE_FLOAT32_C(  -678.43), SIMDE_FLOAT32_C(   640.73),
                         SIMDE_FLOAT32_C(  -214.39), SIMDE_FLOAT32_C(   913.47), SIMDE_FLOAT32_C(   802.27), SIMDE_FLOAT32_C(  -719.14),
                         SIMDE_FLOAT32_C(   839.92), SIMDE_FLOAT32_C(   326.41), SIMDE_FLOAT32_C(   231.12), SIMDE_FLOAT32_C(  -599.80),
                         SIMDE_FLOAT32_C(  -175.19), SIMDE_FLOAT32_C(  -889.93), SIMDE_FLOAT32_C(  -271.66), SIMDE_FLOAT32_C(  -767.93)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(   521.85), SIMDE_FLOAT32_C(   990.67), SIMDE_FLOAT32_C(  -279.18), SIMDE_FLOAT32_C(   874.22),
                         SIMDE_FLOAT32_C(  -573.38), SIMDE_FLOAT32_C(   750.45), SIMDE_FLOAT32_C(   668.60), SIMDE_FLOAT32_C(  -415.36),
                         SIMDE_FLOAT32_C(  -224.84), SIMDE_FLOAT32_C(   162.63), SIMDE_FLOAT32_C(  -940.52), SIMDE_FLOAT32_C(  -654.73),
                         SIMDE_FLOAT32_C(  -780.19), SIMDE_FLOAT32_C(   466.85), SIMDE_FLOAT32_C(  -383.81), SIMDE_FLOAT32_C(   542.46)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(  -552.33), SIMDE_FLOAT32_C(  -308.34), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -233.49),
                         SIMDE_FLOAT32_C(   358.99), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   133.67), SIMDE_FLOAT32_C(  -303.78),
                         SIMDE_FLOAT32_C(  1064.76), SIMDE_FLOAT32_C(   163.78), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   112.15), SIMDE_FLOAT32_C(     0.00)) },
    { UINT16_C(18374),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(   292.05), SIMDE_FLOAT32_C(  -553.40), SIMDE_FLOAT32_C(   143.99), SIMDE_FLOAT32_C(  -940.99),
                         SIMDE_FLOAT32_C(    81.28), SIMDE_FLOAT32_C(   184.98), SIMDE_FLOAT32_C(   662.04), SIMDE_FLOAT32_C(   951.27),
                         SIMDE_FLOAT32_C(   953.92), SIMDE_FLOAT32_C(  -384.26), SIMDE_FLOAT32_C(  -149.83), SIMDE_FLOAT32_C(   751.91),
                         SIMDE_FLOAT32_C(  -625.68), SIMDE_FLOAT32_C(    58.69), SIMDE_FLOAT32_C(   581.13), SIMDE_FLOAT32_C(   892.26)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(   104.19), SIMDE_FLOAT32_C(   819.72), SIMDE_FLOAT32_C(  -437.31), SIMDE_FLOAT32_C(   380.61),
                         SIMDE_FLOAT32_C(   930.00), SIMDE_FLOAT32_C(  -224.08), SIMDE_FLOAT32_C(  -557.43), SIMDE_FLOAT32_C(  -295.43),
                         SIMDE_FLOAT32_C(  -271.48), SIMDE_FLOAT32_C(  -705.78), SIMDE_FLOAT32_C(  -796.97), SIMDE_FLOAT32_C(   -62.19),
                         SIMDE_FLOAT32_C(  -247.25), SIMDE_FLOAT32_C(   225.36), SIMDE_FLOAT32_C(   312.68), SIMDE_FLOAT32_C(  -185.21)),
      simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C( -1373.12), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   409.06), SIMDE_FLOAT32_C(  1219.47), SIMDE_FLOAT32_C(  1246.70),
                         SIMDE_FLOAT32_C(  1225.40), SIMDE_FLOAT32_C(   321.52), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
                         SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -166.67), SIMDE_FLOAT32_C(   268.45), SIMDE_FLOAT32_C(     0.00)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m512 r = simde_mm512_maskz_sub_ps(test_vec[i].k, test_vec[i].a, test_vec[i].b);
    simde_assert_m512_close(r, test_vec[i].r, 1);
  }

  return 0;
}

static int
test_simde_mm512_maskz_sub_pd(SIMDE_MUNIT_TEST_ARGS) {
  const struct {
    simde__mmask8 k;
    simde__m512d a;
    simde__m512d b;
    simde__m512d r;
  } test_vec[8] = {
    { UINT8_C( 63),
      simde_mm512_set_pd(SIMDE_FLOAT64_C( -415.75), SIMDE_FLOAT64_C(  784.67),
                         SIMDE_FLOAT64_C( -496.30), SIMDE_FLOAT64_C(  526.56),
                         SIMDE_FLOAT64_C(   67.17), SIMDE_FLOAT64_C( -881.21),
                         SIMDE_FLOAT64_C(  348.77), SIMDE_FLOAT64_C(  537.04)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(  554.42), SIMDE_FLOAT64_C(  844.38),
                         SIMDE_FLOAT64_C( -817.51), SIMDE_FLOAT64_C(  338.74),
                         SIMDE_FLOAT64_C(  -70.99), SIMDE_FLOAT64_C( -221.33),
                         SIMDE_FLOAT64_C(   59.42), SIMDE_FLOAT64_C(  138.47)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C(  321.21), SIMDE_FLOAT64_C(  187.82),
                         SIMDE_FLOAT64_C(  138.16), SIMDE_FLOAT64_C( -659.88),
                         SIMDE_FLOAT64_C(  289.35), SIMDE_FLOAT64_C(  398.57)) },
    { UINT8_C(204),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(  392.86), SIMDE_FLOAT64_C(   15.96),
                         SIMDE_FLOAT64_C( -681.24), SIMDE_FLOAT64_C(  759.61),
                         SIMDE_FLOAT64_C( -507.08), SIMDE_FLOAT64_C( -150.50),
                         SIMDE_FLOAT64_C(  409.54), SIMDE_FLOAT64_C( -197.17)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C( -661.30), SIMDE_FLOAT64_C( -524.33),
                         SIMDE_FLOAT64_C( -241.59), SIMDE_FLOAT64_C( -105.89),
                         SIMDE_FLOAT64_C( -289.61), SIMDE_FLOAT64_C( -891.58),
                         SIMDE_FLOAT64_C(  378.73), SIMDE_FLOAT64_C(  -71.99)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C( 1054.16), SIMDE_FLOAT64_C(  540.29),
                         SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C( -217.47), SIMDE_FLOAT64_C(  741.08),
                         SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00)) },
    { UINT8_C(198),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(  911.91), SIMDE_FLOAT64_C( -816.98),
                         SIMDE_FLOAT64_C( -164.10), SIMDE_FLOAT64_C( -340.48),
                         SIMDE_FLOAT64_C(  -77.39), SIMDE_FLOAT64_C(  952.25),
                         SIMDE_FLOAT64_C(  134.46), SIMDE_FLOAT64_C(  698.09)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(  243.51), SIMDE_FLOAT64_C(  766.95),
                         SIMDE_FLOAT64_C(  899.58), SIMDE_FLOAT64_C(  478.33),
                         SIMDE_FLOAT64_C(  -35.25), SIMDE_FLOAT64_C( -117.47),
                         SIMDE_FLOAT64_C(  258.33), SIMDE_FLOAT64_C( -248.63)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(  668.40), SIMDE_FLOAT64_C(-1583.93),
                         SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C( 1069.72),
                         SIMDE_FLOAT64_C( -123.87), SIMDE_FLOAT64_C(    0.00)) },
    { UINT8_C(149),
      simde_mm512_set_pd(SIMDE_FLOAT64_C( -179.27), SIMDE_FLOAT64_C(  894.92),
                         SIMDE_FLOAT64_C( -553.39), SIMDE_FLOAT64_C(  676.19),
                         SIMDE_FLOAT64_C( -747.28), SIMDE_FLOAT64_C( -915.60),
                         SIMDE_FLOAT64_C( -132.34), SIMDE_FLOAT64_C( -335.46)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C( -395.05), SIMDE_FLOAT64_C( -855.26),
                         SIMDE_FLOAT64_C(  444.16), SIMDE_FLOAT64_C(  962.50),
                         SIMDE_FLOAT64_C(  987.86), SIMDE_FLOAT64_C( -410.31),
                         SIMDE_FLOAT64_C(   36.70), SIMDE_FLOAT64_C(  874.49)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(  215.78), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C( -286.31),
                         SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C( -505.29),
                         SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(-1209.95)) },
    { UINT8_C(196),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(  235.34), SIMDE_FLOAT64_C(  443.88),
                         SIMDE_FLOAT64_C( -185.89), SIMDE_FLOAT64_C( -220.35),
                         SIMDE_FLOAT64_C( -983.75), SIMDE_FLOAT64_C( -348.00),
                         SIMDE_FLOAT64_C(  167.63), SIMDE_FLOAT64_C(  489.46)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C( -548.50), SIMDE_FLOAT64_C( -730.33),
                         SIMDE_FLOAT64_C(  337.76), SIMDE_FLOAT64_C(   90.27),
                         SIMDE_FLOAT64_C( -665.67), SIMDE_FLOAT64_C(  930.26),
                         SIMDE_FLOAT64_C( -181.77), SIMDE_FLOAT64_C(  530.83)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(  783.84), SIMDE_FLOAT64_C( 1174.21),
                         SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(-1278.26),
                         SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00)) },
    { UINT8_C(230),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(  439.60), SIMDE_FLOAT64_C(   39.73),
                         SIMDE_FLOAT64_C(  948.24), SIMDE_FLOAT64_C( -515.41),
                         SIMDE_FLOAT64_C( -519.45), SIMDE_FLOAT64_C(  273.14),
                         SIMDE_FLOAT64_C(  256.99), SIMDE_FLOAT64_C(   69.80)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C( -138.55), SIMDE_FLOAT64_C(  878.16),
                         SIMDE_FLOAT64_C( -299.57), SIMDE_FLOAT64_C(  829.01),
                         SIMDE_FLOAT64_C( -823.97), SIMDE_FLOAT64_C(  313.21),
                         SIMDE_FLOAT64_C( -396.40), SIMDE_FLOAT64_C(  940.94)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(  578.15), SIMDE_FLOAT64_C( -838.43),
                         SIMDE_FLOAT64_C( 1247.81), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(  -40.07),
                         SIMDE_FLOAT64_C(  653.39), SIMDE_FLOAT64_C(    0.00)) },
    { UINT8_C( 58),
      simde_mm512_set_pd(SIMDE_FLOAT64_C( -903.31), SIMDE_FLOAT64_C( -183.01),
                         SIMDE_FLOAT64_C( -989.08), SIMDE_FLOAT64_C( -684.38),
                         SIMDE_FLOAT64_C( -369.22), SIMDE_FLOAT64_C(  764.60),
                         SIMDE_FLOAT64_C(  215.22), SIMDE_FLOAT64_C( -906.73)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C( -662.91), SIMDE_FLOAT64_C(   31.45),
                         SIMDE_FLOAT64_C( -162.68), SIMDE_FLOAT64_C(  929.60),
                         SIMDE_FLOAT64_C( -957.67), SIMDE_FLOAT64_C(  222.14),
                         SIMDE_FLOAT64_C(  292.45), SIMDE_FLOAT64_C(  -99.46)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C( -826.40), SIMDE_FLOAT64_C(-1613.98),
                         SIMDE_FLOAT64_C(  588.45), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C(  -77.23), SIMDE_FLOAT64_C(    0.00)) },
    { UINT8_C(175),
      simde_mm512_set_pd(SIMDE_FLOAT64_C( -656.49), SIMDE_FLOAT64_C( -795.39),
                         SIMDE_FLOAT64_C(  220.41), SIMDE_FLOAT64_C(  680.39),
                         SIMDE_FLOAT64_C( -673.42), SIMDE_FLOAT64_C(  859.78),
                         SIMDE_FLOAT64_C(  306.17), SIMDE_FLOAT64_C(  632.76)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(  367.28), SIMDE_FLOAT64_C( -294.33),
                         SIMDE_FLOAT64_C(  963.39), SIMDE_FLOAT64_C( -504.91),
                         SIMDE_FLOAT64_C( -654.23), SIMDE_FLOAT64_C( -988.36),
                         SIMDE_FLOAT64_C(  634.30), SIMDE_FLOAT64_C( -857.50)),
      simde_mm512_set_pd(SIMDE_FLOAT64_C(-1023.77), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C( -742.98), SIMDE_FLOAT64_C(    0.00),
                         SIMDE_FLOAT64_C(  -19.19), SIMDE_FLOAT64_C( 1848.14),
                         SIMDE_FLOAT64_C( -328.13), SIMDE_FLOAT64_C( 1490.26)) }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
    simde__m512d r = simde_mm512_maskz_sub_pd(test_vec[i].k, test_vec[i].a, test_vec[i].b);
    simde_assert_m512d_close(r, test_vec[i].r, 1);
  }

  return 0;
}

SIMDE_TEST_FUNC_LIST_BEGIN
  SIMDE_TEST_FUNC_LIST_ENTRY(mm512_sub_epi8)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm512_mask_sub_epi8)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm512_maskz_sub_epi8)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm512_sub_epi16)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm512_sub_epi32)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm512_mask_sub_epi32)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm512_maskz_sub_epi32)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm512_sub_epi64)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm512_mask_sub_epi64)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm512_maskz_sub_epi64)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm512_sub_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm512_mask_sub_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm512_maskz_sub_ps)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm512_sub_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm512_mask_sub_pd)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm512_maskz_sub_pd)
SIMDE_TEST_FUNC_LIST_END

#include <test/x86/avx512/test-avx512-footer.h>
